在CALayer Class Guide有描述此功能,但實作時發現沒有相關的property,無法使用,查看了網路資料,例子好像都是2009以前的,因此懷疑已被Apple移除,現在只從在UIView相關的Class還有此功能。
kCALayerHeightSizable
如果被设置,层的高度随超层的高度改变。否则,层的高度不随超层的高度改变。
kCALayerWidthSizable
如果被设置,层的宽度随超层的宽度改变。否则,层的宽度不随超层的宽度改变。
kCALayerMinXMargin
如果被设置,层的左边缘将随超层的宽度重新定位。否则,层的左边缘相对于超层的边缘保持相同的位置。
kCALayerMaxXMargin
如果被设置,层的右边缘将随超层的宽度重新定位。否则,层的右边缘相对于超层的边缘保持相同的位置。
kCALayerMaxYMargin
如果被设置,层的上边缘将随超层的宽度重新定位。否则,层的上边缘相对于超层的边缘保持相同的位置。
kCALayerMinYMargin
如果被设置,层的下边缘将随超层的宽度重新定位。否则,层的下边缘相对于超层的边缘保持相同的位置。
举例来说,为了让层保留在其超层的左下角,可使用kCALayerMaxXMargin | kCALayerMaxYMargin掩码。当在同轴方向上有多个活动掩码时,改变值将在它们之中均匀的分布,图1提供了这些常量值位置的图形表示。
图1 层的autoresizing mask常量

当这些常量之一被省略时,层的布局在那个方面被固定。如果一个常量出现在掩码中,那层的布局在那个方面是活动的。
层的子类可以覆盖resizeSublayersWithOldSize: 和 resizeWithOldSuperlayerSize: 方法,来自定义层的autoresizing行为。只要层的bounds属性被修改,resizeSublayersWithOldSize:将被自定调 用,并发送一个resizeWithOldSuperlayerSize:消息给每一个子层。每一个子层将旧的bounds size和新的size做比较,并根据autoresizing mask调整其位置和尺寸。
沒有留言:
張貼留言