我在 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 更大将导致忽略虚假图层大小
警告。
要解决这个问题,我们应该考虑一下
- 不使用绘图
- 使用
UITableView
或UICollectionView
一点一点地加载和卸载巨大的图层。
关于ios - 绘制(_矩形: CGRect) not drawing above certain size,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56598739/