标签:style class tar color int width
当使用
CABasicAnimation时,CAConstraintLayoutManager不起作用,原因未知
CoreAnimation编程指南(九)图层布局
发布日期:2012-11-21 浏览次数:7
基于条件的布局允许你根据图层和它同级图层或者它的父图层的相应关系指定图层的位置和大小。通过CAConstraint类描述的关系被保存在子图层的constraints数组属性里面。
图1描述了在指定关系的的时候你可以使用的布局特性。
Figure 1 布局管理器constraints属性
当使用约束布局的时候,你首先创建一个CAConstraintLayoutManager的实例,并把它设置为父图层的布局管理器。然后你通过实例化CAConstraint对象为子图层创建约束条件,并把这些约束条件通过使用addConstraint:方法添加到子图层的约束属性里面。每个CAConstraint实例封装了一个两个图层在同一轴上的几何关系。
同级层引用的名称,使用图层的name属性。特定的名称superlayer被使用来引用图层的父图层。
每个轴上面最多只能指定两个关系。如果你给图层的左边和右边都指定约束关系,那么图层的宽度就会不同。如果你给图层的左边和宽度指定约束关系,则图层的右边就会从根据父图层的frame移动。通常你一般只会指定单个边的约束条件,图层在同一个轴上面的大小将会作为第二个约束关系。
代码1里面的示例代码创建了一个图层,然后使用位置约束条件添加子图层。图2描述了布局的结果。
Figure 2 基于示例中constraints的布局
代码 1 配置 layer的 constraints
// create and set a constraint layout manager for theLayer theLayer.layoutManager=[CAConstraintLayoutManager layoutManager]; CALayer *layerA = [CALayer layer]; layerA.name = @"layerA"; layerA.bounds = CGRectMake(0.0,0.0,100.0,25.0); layerA.borderWidth = 2.0; [layerA addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMidY relativeTo:@"superlayer" attribute:kCAConstraintMidY]]; [layerA addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMidX relativeTo:@"superlayer" attribute:kCAConstraintMidX]]; [theLayer addSublayer:layerA]; CALayer *layerB = [CALayer layer]; layerB.name = @"layerB"; layerB.borderWidth = 2.0; [layerB addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintWidth relativeTo:@"layerA" attribute:kCAConstraintWidth]]; [layerB addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMidX relativeTo:@"layerA" attribute:kCAConstraintMidX]]; [layerB addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMaxY relativeTo:@"layerA" attribute:kCAConstraintMinY offset:-10.0]]; [layerB addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMinY relativeTo:@"superlayer" attribute:kCAConstraintMinY offset:+10.0]]; [theLayer addSublayer:layerB];
以上是代码执行过程:
约束布局管理器 CAConstraintLayoutManager,布布扣,bubuko.com
约束布局管理器 CAConstraintLayoutManager
标签:style class tar color int width
原文地址:http://www.cnblogs.com/spiderdzl/p/3714064.html