我对CALayer的属性界限感到困惑,
- (void)viewDidLoad {
[super viewDidLoad];
CALayer *sublayer = [CALayer layer];
sublayer.backgroundColor = [UIColor blueColor].CGColor;
sublayer.frame = CGRectMake(18, 18, 154, 154);
[self.view.layer addSublayer:sublayer];
CALayer *sublayer2 = [CALayer layer];
sublayer2.backgroundColor = [UIColor redColor].CGColor;
sublayer2.frame = CGRectMake(20, 20, 150, 150);
sublayer2.bounds = CGRectMake(0, 0, 50, 50);
sublayer2.zPosition = 10;
[self.view.layer addSublayer:sublayer2];
}
sublayer2在sublayer1的矩形中心绘制一个小的50X50矩形, 但如果这条线被注释掉,它将绘制一个150X150的矩形:
sublayer2.bounds = CGRectMake(0, 0, 50, 50);
答案 0 :(得分:1)
1
bounds矩形在视图的本地坐标中表示 系统。此矩形的默认原点是(0,0)及其大小 匹配框架矩形的大小。 //这就是界限的真正含义!
... ...
设置bounds属性的大小时,大小值为 frame属性更改以匹配bounds矩形的新大小。
......
所以执行时
sublayer2.bounds = CGRectMake(0, 0, 50, 50);
帧的大小将自动变为50X50,
这里CGRectMake(0,0,..)“0,0”可以是任何值,因为它不会产生任何影响。
2因为我们没有更改anchorPoint,默认情况下anchorPoint是(0.5,0.5),其对应的位置是(95,95),所以最后它将绘制一个5X5矩形,其中心为(95,95)< / p>
如果我错了,请纠正我