2015-09-17 2 views
1

J'ai un uiview B qui est destiné à être une partie agrandie d'un autre uiview A (la zone autour de "touchPoint" est agrandie). Lorsque "touchPoint" change, je veux que B mette à jour son affichage. J'ai la fonction suivante dans B et il met à jour (quand j'appelle B.setNeedsDisplay()), mais il garde l'ancien contenu en quelque sorte visible, comme une image de fond fanée. Est-ce que vous savez pourquoi l'ancien contenu apparaît toujours, et pourquoi cet effet est-il passé? Est-ce parce que la zone que je grossis a un fond transparent? Comment le corriger?Comment mettre à jour correctement une vue agrandie et traduite avec CGContextScaleCTM et CGContextTranslateCTM

override func drawRect(rect: CGRect) 
    { 
     let context: CGContextRef = UIGraphicsGetCurrentContext() 
     CGContextTranslateCTM(context,1*(self.frame.size.width*0.5),1*(self.frame.size.height*0.5)) 
     CGContextScaleCTM(context, 1.5, 1.5) 
     CGContextTranslateCTM(context,-1*(touchPoint.x),-1*(touchPoint.y)) 
     viewToMagnify.layer.renderInContext(context) 
    } 

J'aurais aimé poster une image, mais je n'ai pas assez Stackoverflow encore ... :-) souligne

Merci pour tous les pointeurs!

Répondre

0

J'ai trouvé la réponse à ma propre question.

Le contexte de la vue agrandie devait être dégagé au début de la fonction drawRect, ce qui suit:

CGContextClearRect(context, rect)