我有一个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