【问题标题】:draw(_ rect: CGRect) not drawing above certain sizedraw(_ rect: CGRect) 不绘制超过一定尺寸
【发布时间】:2019-06-14 13:00:28
【问题描述】:

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

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 仍然可以滚动。它的内容只是空的。

这发生在模拟的第 5 代 iPad 和模拟的 iPad Pro 9.7" 中。

【问题讨论】:

    标签: ios swift drawrect


    【解决方案1】:

    问题在于draw 仅用作小视图的自定义绘图,而不是大画布。但是我认为这个故障点应该记录在某个地方。使画布更大会导致ignoring bogus layer size 警告。

    要解决这个问题,应该考虑

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-21
      • 2018-03-28
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多