我有一个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(无效果)
  • 最佳答案

    因此,可以将其标记为已回答:确保在主线程上调用UIKit方法。

    关于ios - UIView setNeedsDisplay是否没有效果?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15351878/

    10-13 07:06