ios - 绘制(_矩形: CGRect) not drawing above certain size

标签 ios swift drawrect

我在 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()
}

对于“较小”尺寸的 View ,绘图效果很好,但超过一定限制后,就不再绘制了。

它对于矩形来说渲染得很好

(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"中。

最佳答案

问题是 draw 仅适用于小 View 而不是大 Canvas 的自定义绘制。不过我认为这个失败点应该记录在某处。使 Canvas 更大将导致忽略虚假图层大小警告。

要解决这个问题,我们应该考虑一下

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

关于ios - 绘制(_矩形: CGRect) not drawing above certain size,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56598739/

相关文章:

仅限 iOS 设置应用程序

iphone - 在drawInRect:rect崩溃,我有解决方案,但不知道如何?

NSOperation:在主线程中添加 subview 和慢

iphone - 将 UILabel 放置在圆圈中

ios - 如何将 UIView 旋转固定的 +/- 角度?

ios - 如何按字母顺序对二维数组中的数据进行排序?

ios - Swift Framework 仅在干净之后构建

swift - 如何使用prepare for segue 或init 设置NSComboBox?

ios - 如何在应用程序启动时预先选择单元格?

ios - Sirikit意图处理