观点是不正确的旋转

问题描述:

我有这样的代码UIViewController子类中:观点是不正确的旋转

- (id)init { 
    self = [super init]; 

    if (self) {    
     self.view.frame = [PDToolbox screenFrame]; 
     self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

     self.view.backgroundColor = [UIColor redColor]; 
    } 

    return self; 
} 

我在的任何旋转方法上的唯一事情是这样的:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 
    return YES; 
} 

但是屏幕后被旋转到风景,在视图上做一个NSLog显示此:

<UIView: 0x10061640; frame = (0 0; 320 480); transform = [0, -1, 1, 0, 0, 0]; autoresize = W+H; layer = <CALayer: 0x10061670>> 

我不明白为什么它正在做这个转变的事情,而不是像正常一样旋转?这意味着我将任何视图放置在旋转后的顶部,并将视图的大小设置为320x480的位置。

编辑:

人们不理解。所以我把一个视图在它上面,同样大小的的UIView,使用:

UIView *anotherView = [UIView alloc] initWithFrame:controller.view.bounds]; 
[controller.view addSubview:anotherView]; 

如果我在肖像添加anotherView,anotherView出现在肖像,与框架小320x480。

如果我在景观中添加另一个视图,另一个视图出现在横向上,但仍与帧320x480,因为这是controller.view的框架仍然是什么,因为某些未知的原因。

+0

你可以只发布你的UIViewCOntroller的整个代码 – 2012-07-12 16:30:53

+0

@ R.A当然。刚做完了。 – Andrew 2012-07-12 16:36:13

+0

其实我不明白你的问题..你是什么意思?“我把它放在它的顶部,并将其设置为视图的大小最终在320x480的位置” – 2012-07-12 16:40:56

您的视图/控制器层次结构是什么样的?在我看来,有些东西是在视图上设置90°旋转变换,而不是改变视图的框架。如果你自己没有这样做,那很可能是父视图或视图控制器。

+0

它是UIViewController的直接子类。 – Andrew 2012-07-12 16:48:46

+0

我不是指你的UIViewController类的类层次结构,我的意思是你的应用程序的视图层次结构。控制器的视图嵌入在另一个视图中,还是直接放置在应用程序的UIWindow中? – Tony 2012-07-12 16:53:01

+0

这是UIViewController附带的普通视图。这并没有被修改。 – Andrew 2012-07-12 17:35:43

框架和边界是非常不同的东西。你应该阅读苹果指南View Geometry - 它包含了很多对我来说无价的信息。

因为有人正在设置您的transform(它会影响frame,但不会影响bounds),因此您的界限始终为320x480。

确保您的视图控制器视图的超级视图autoresizesSubviews设置为YES并且添加的任何子视图都有相应的autoresizingMask s。