UIView setNeedsDisplay没有效果?

Stu*_*don 1 drawing uiview ios

我有一个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
}
Run Code Online (Sandbox Code Playgroud)

我尝试过的一小部分清单:

  • [self setNeedsDisplay]
  • [self.layer setNeedsDisplay]
  • [self.mySubLayer setNeedsDisplay]
  • self.contentMode = UIViewContentModeRedraw;
  • 手动创建视图,而不是从.nib加载它(没有效果)
  • 删除图层(和子图层)的使用并仅使用drawRect(无效果)

D.C*_*.C. 5

所以这可以标记为已回答:确保在主线程上调用UIKit方法.