iOS 视图内容模式与图层深入解析
1. 视图内容模式
当一个视图在自身内部绘制内容,而不仅仅是设置背景颜色和添加子视图时,它就拥有了内容。此时,视图的 contentMode 属性在视图大小改变时变得至关重要。绘图系统在可能的情况下,会避免让视图重新绘制,而是使用之前绘图操作的缓存结果(位图后备存储)。如果视图大小改变,系统会根据 contentMode 设置拉伸、缩小或重新定位缓存的绘图。
为了说明这一点,我们可以创建一个 UIView 子类 MyView ,它知道如何绘制箭头。在应用启动后,使用延迟执行来调整视图大小:
delay(0.1) {
mv.bounds.size.height *= 2 // mv 是 MyView 实例
}
这样,我们在不调用 draw(_:) 方法的情况下将视图高度加倍。结果是视图的绘图显示为正确高度的两倍。但迟早 draw(_:) 方法会被调用,绘图将根据代码刷新。由于代码中绘制的箭头高度是固定的,所以箭头会恢复到原来的大小。
视图的 contentMode 属性通常应与视图的绘制方式一致。如果 draw(_:) 代码根据视图边界的左上角来确定箭头的大小和位置,我们可以将 contentMode 设置为 .topLeft
超级会员免费看
订阅专栏 解锁全文
49

被折叠的 条评论
为什么被折叠?



