2010-03-26 8 views

Répondre

57
[myView setContentMode:UIViewContentModeRedraw]; 

Vous pouvez le configurer dans IB ainsi (par exemple, le mode réglé sur "redessiner")

+1

C'est la manière préférée. – yuji

+0

Voir la réponse de l'auteur original ci-dessous. setNeedsDisplay est en effet le bon appel de méthode. –

+3

'setNeedsDisplay:' est utilisé lorsque vous souhaitez déclencher un rafraîchissement par programmation. Lorsque vous voulez que les changements d'orientation déclenchent un rafraîchissement, alors 'setContentMode:' est le ticket. – wcochran

8

C'était un bug lié à quelque chose de complètement différent. En effet, setNeedsDisplay provoque l'appel de drawRect.

+0

Oui 'setNeedsDisplay:' déclenchera un redessin, mais nécessite que le programmeur l'invoque explicitement. 'setContentMode: 'déclenchera automagiquement un redessin lors d'un changement d'orientation. – wcochran

0

pour répondre à cela et les autres 94.000 similiar questions au sujet de vue rotation/drawRect funkiness,

-(id)initWithFrame:(CGRect)frame 
{ 
    if(self=[super initWithFrame:frame]) { 
     self.autoresizesSubviews=YES; 
     self.autoresizingMask=UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight; 
    } 
    return self; 
}