我有一個UIView派生的視圖,只繪製一次和從未更新。UIView setNeedsDisplay沒有效果?
調用[self setNeedsDisplay]
不起作用。什麼會造成這種情況?
不要緊繪圖代碼是否處於
drawRect:
,或drawLayer:inContext:
(具有限定的空的drawRect())
如果drawLayer:未定義inContext的,然後調用drawRect。但只有一次(佈局過程中)。
- (void)drawLayer:(CALayer*)layer inContext:(CGContextRef)ctx {
// drawing occurs, but just once (during view layout)
}
`- (void)drawRect:(CGRect) rect {
// empty -- never called
}
什麼,我已經嘗試了小清單:
- [自我setNeedsDisplay]
- [self.layer setNeedsDisplay]
- [self.mySubLayer setNeedsDisplay]
- 自我。 contentMode = UIViewContentModeRedraw;
- 手動創建,而不是從一個筆尖加載它(無效果)
- 卸下使用層(子層和),並使用剛剛drawRect中(無效果)的圖,
你確定setNeedsDisplay被調用嗎?顯示該代碼,設置一個斷點,並指出它發生的位置,然後回報... – 2013-03-12 01:48:45
要跟進Cubs的評論,你確定你在主線程上調用UIKit方法嗎?如果你不這樣做,可能會有一些古怪的後果,比如沒有任何事情發生。 – 2013-03-12 01:56:59
是的,我設置了斷點。好點子。絕對肯定。花了幾個小時在這個,閱讀所有帖子,我可以找到並仔細檢查一切。即使實例與由nib初始化並推入IBOutput(地址不變)的實例相同。有很多變量,所以我把所有的東西都轉換成不使用CALayer,但這沒什麼區別,所以我把它放回去了。這對iOS框架來說很奇怪...... – StuWeldon 2013-03-12 02:00:19