I am subclassing a UIView and overwrite the drawRect method. I'm noticing that the view's drawrect is only being called when the view first loads. After that it is never called again. How to I make sure it gets called after an orientation change? I've tried calling setNeedsDisplay on the view before and after the rotation and that doesn't do it.
iPhone SDK: How to trigger drawRect on UIView subclass after orientation change?
[myView setContentMode:UIViewContentModeRedraw];
You can set this in IB as well (i.e., set mode to "redraw")
See the original author's response below. setNeedsDisplay is indeed the right method call. –
Vigilance
setNeedsDisplay:
is used when you want to programmatically trigger a redraw. When you want orientation changes to trigger a redraw then setContentMode:
is the ticket. –
Ashlieashlin This was a bug related to something completely different. setNeedsDisplay does indeed cause drawRect to be called.
Yes
setNeedsDisplay:
will trigger a redraw, but requires the programmer to explicitly invoke it. 'setContentMode:` will automagically trigger a redraw on an orientation change. –
Ashlieashlin to answer this and the other 94,000 similiar questions about view rotation/drawrect funkiness,
-(id)initWithFrame:(CGRect)frame
{
if(self=[super initWithFrame:frame]) {
self.autoresizesSubviews=YES;
self.autoresizingMask=UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
}
return self;
}
© 2022 - 2024 — McMap. All rights reserved.