1

我有一个 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(无效果)
4

1 回答 1

5

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

于 2013-03-12T02:12:04.917 回答