2

在 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];

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

4

1 回答 1

4

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

an 的框架UIView是矩形,表示为相对于其中包含的位置 (x,y) 和大小 (width,height) superview

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

于 2013-01-04T10:34:21.090 回答