我在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“中发生的。
答案 0 :(得分:0)
问题在于draw
仅作为用于小视图而不是大画布的自定义图形。但是,我认为此故障点应记录在某处。放大画布会导致ignoring bogus layer size
警告。
要解决此问题,要么应该考虑
UITableView
或UICollectionView
一点一点地加载和卸载巨大的层。