CALayer中的界限究竟是什么意思?

时间:2012-04-28 12:39:29

标签: xcode calayer

我对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);

1 个答案:

答案 0 :(得分:1)

在阅读sch的“指南”之后,我认为这种行为是由于以下原因:

指南中提到的

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>

如果我错了,请纠正我