我有一个 UIView 派生的视图,它只绘制一次并且从不更新。
调用[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
}
我尝试过的小清单:
- [自行设置NeedsDisplay]
- [self.layer setNeedsDisplay]
- [self.mySubLayer setNeedsDisplay]
- self.contentMode = UIViewContentModeRedraw;
- 手动创建视图,而不是从 .nib 加载它(无效)
- 删除图层(和子图层)的使用并仅使用 drawRect(无效果)