ios - UIView setNeedsDisplay 没有效果?

标签 ios uiview drawing

我有一个仅绘制的 UIView 派生 View 一次并且从未更新。

调用[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
    }
    

    我尝试过的小 list :
  • [自设需求显示]
  • [self.layer setNeedsDisplay]
  • [self.mySubLayer setNeedsDisplay]
  • self.contentMode = UIViewContentModeRedraw;
  • 手动创建 View ,而不是从 .nib 加载它(无效)
  • 删除层(和子层)的使用,只使用drawRect(无效)
  • 最佳答案

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

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

    相关文章:

    c# - 如何绘制颜色范围较柔和的图像?

    ios - 在所有 View Controller 中使用 viewDidLoad 还是在主视图 Controller 中使用多个 UIView 更好?

    ios - 尝试从 plist 加载数据并刷新屏幕

    iphone - 如何访问我在相机应用程序中保存的照片的相册?

    ios - 无法从 Xcode 11 上传 .ipa - "The Info.plist indicates an iOS app, but submitting a pkg or mpkg"

    swift - UIView 捕捉触摸事件并传递

    database - 有没有比visio更漂亮的数据库绘图软件?

    ios - 删除在 UIImage 上绘制的 UIBezirePath 线

    ios - 关闭和打开应用程序后核心数据约束工作错误(Swift)

    ios - pickerView 每行有两个标签