draw(_ rect:CGRect)未绘制到一定大小以上

时间:2019-06-14 13:00:28

标签: ios swift drawrect

我在UIView中有一个自定义的UIScrollView子类,该子类(除其他外)覆盖了

override var intrinsicContentSize: CGSize {
    get {
        ...
    }
}

和(最小示例):

override func draw(_ rect: CGRect) {
    print(rect)
    UIColor.white.set() // it has a dark background
    UIBezierPath(rect: CGRect(x: 100, y: 100, width: 10, height: 10)).stroke()
}

对于“较小”的视图,绘图效果很好,但是在一定限制之上,不再进行绘图。

它对矩形渲染很好

(0.0, 0.0, 79.5, 7458.5)
(0.0, 0.0, 228.5, 7458.5)
(0.0, 0.0, 149.0, 7738.0)
(0.0, 0.0, 429.0, 7738.0)

但是对直肠失败

(0.0, 0.0, 89.5, 8381.0)
(0.0, 0.0, 257.0, 8381.0)

没有错误消息或警告。没有什么可以让我知道失败的原因。 UIScrollView仍可滚动。它的内容是空的。

这是在模拟的第五代iPad和模拟的iPad Pro 9.7“中发生的。

1 个答案:

答案 0 :(得分:0)

问题在于draw仅作为用于小视图而不是大画布的自定义图形。但是,我认为此故障点应记录在某处。放大画布会导致ignoring bogus layer size警告。

要解决此问题,要么应该考虑

  • 不使用抽奖
  • 使用UITableViewUICollectionView一点一点地加载和卸载巨大的层。