当我改变UIVIew的bounds.size.height时,frame.origin.y会改变

Lek*_*kHo 2 frame uiview bounds ios

(我的英语不是很好LOL)

我将UIView对象定义为子视图,当我更改subview.bounds.size.height时,更改了subview.frame.origin.y,我的代码中有什么问题吗?

这是我的代码:

- (IBAction)touch
{
    static int i = 1;
    NSLog(@"%d: Bounds: %@", i, NSStringFromCGRect(self.subView.bounds));
    NSLog(@"%d: Frame: %@", i, NSStringFromCGRect(self.subView.frame));
    self.subView.bounds = CGRectMake(0.f, 0.f, self.subView.bounds.size.width, self.subView.bounds.size.height + 50);
    NSLog(@"%d: Bounds: %@", i, NSStringFromCGRect(self.subView.bounds));
    NSLog(@"%d: Frame: %@", i, NSStringFromCGRect(self.subView.frame));

    i++;
}
Run Code Online (Sandbox Code Playgroud)

系统输出:

2011-12-23 12:11:29.316 Angry[7959:f803] 1: Bounds: {{0, 0}, {320, 100}}
2011-12-23 12:11:29.318 Angry[7959:f803] 1: Frame: {{0, 0}, {320, 100}}
2011-12-23 12:11:29.319 Angry[7959:f803] 1: Bounds: {{0, 0}, {320, 150}}
2011-12-23 12:11:29.320 Angry[7959:f803] 1: Frame: {{0, -25}, {320, 150}}

2011-12-23 12:11:30.920 Angry[7959:f803] 2: Bounds: {{0, 0}, {320, 150}}
2011-12-23 12:11:30.921 Angry[7959:f803] 2: Frame: {{0, -25}, {320, 150}}
2011-12-23 12:11:30.922 Angry[7959:f803] 2: Bounds: {{0, 0}, {320, 200}}
2011-12-23 12:11:30.923 Angry[7959:f803] 2: Frame: {{0, -50}, {320, 200}}

2011-12-23 12:11:32.080 Angry[7959:f803] 3: Bounds: {{0, 0}, {320, 200}}
2011-12-23 12:11:32.082 Angry[7959:f803] 3: Frame: {{0, -50}, {320, 200}}
2011-12-23 12:11:32.083 Angry[7959:f803] 3: Bounds: {{0, 0}, {320, 250}}
2011-12-23 12:11:32.084 Angry[7959:f803] 3: Frame: {{0, -75}, {320, 250}}
Run Code Online (Sandbox Code Playgroud)

Mik*_*e K 7

改变边界确实会影响框架:

虽然您可以独立于其他属性更改框架,边界和中心属性,但是对一个属性的更改会以下列方式影响其他属性:

  • 设置frame属性时,bounds属性中的size值会更改以匹配框架矩形的新大小.中心属性中的值类似地更改以匹配框架矩形的新中心点.
  • 设置center属性时,框架中的原点值会相应更改.
  • 设置bounds属性的大小时,frame属性中的size值将更改为与bounds矩形的新大小匹配.