观点是不正确的旋转
问题描述:
我有这样的代码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的框架仍然是什么,因为某些未知的原因。
答
您的视图/控制器层次结构是什么样的?在我看来,有些东西是在视图上设置90°旋转变换,而不是改变视图的框架。如果你自己没有这样做,那很可能是父视图或视图控制器。
答
框架和边界是非常不同的东西。你应该阅读苹果指南View Geometry - 它包含了很多对我来说无价的信息。
因为有人正在设置您的transform
(它会影响frame
,但不会影响bounds
),因此您的界限始终为320x480。
确保您的视图控制器视图的超级视图autoresizesSubviews
设置为YES
并且添加的任何子视图都有相应的autoresizingMask
s。
你可以只发布你的UIViewCOntroller的整个代码 – 2012-07-12 16:30:53
@ R.A当然。刚做完了。 – Andrew 2012-07-12 16:36:13
其实我不明白你的问题..你是什么意思?“我把它放在它的顶部,并将其设置为视图的大小最终在320x480的位置” – 2012-07-12 16:40:56