iPad uiviewcontroller - 为什么边界和框架不同尺寸?

时间:2013-01-04 10:30:46

标签: objective-c ios uiviewcontroller

在xcode 4.5.1中,启动单个视图iOS应用程序项目,并在plist或目标设置中,使其仅支持横向左右方向。然后在ViewController中,将其放入:

- (void)viewDidAppear:(BOOL)animated {
    NSLog(@"bounds: %.2f,%.2f",self.view.bounds.size.width,self.view.bounds.size.height);
    NSLog(@"frame:  %.2f,%.2f",self.view.frame.size.width,self.view.frame.size.height);
}

你运行它时会得到这个:

bounds: 1024.00,748.00
frame:  748.00,1024.00

任何想法为什么?它通过过渡,核心动画层等等给我带来了各种各样的问题。看起来像视图的CALayer仍然是纵向的,尽管视图是风景。

编辑:

如果您尝试这样的事情:

CATransition* transition = [CATransition animation];
transition.duration = 2.2;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromBottom;
[self.navigationController.view.layer addAnimation:transition forKey:nil];
[self.navigationController popToRootViewControllerAnimated:NO];

请注意它来自右边而不是底部,新视图与旧视图重叠,因为它是基于纵向尺寸进行的。

1 个答案:

答案 0 :(得分:4)

UIView的边界是矩形,表示为相对于其自身坐标系(0,0)的位置(x,y)和大小(宽度,高度)。

UIView的框架是矩形,表示为相对于其所包含的superview的位置(x,y)和大小(宽度,高度)。

所以,你得到了这个结果。