UIView setNeedsDisplay没有效果?

时间:2013-03-12 01:45:06

标签: ios uiview drawing

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

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

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

1 个答案:

答案 0 :(得分:5)

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