[英]View isn't rotating properly
我在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];
如果我以纵向添加另一个视图,则另一个视图以纵向出现,框架为320x480。
如果我在风景中添加anotherView,则在风景中出现anotherView,但仍然具有320x480的帧,因为某些未知原因,这就是controller.view的帧仍然是。
您的视图/控制器层次结构是什么样的? 在我看来,好像是在您的视图上设置了90°旋转变换,而不是更改视图的框架。 如果您自己不这样做,则很可能是父视图或视图控制器。
框架和界限是非常不同的东西。 您应该阅读Apple的View Geometry指南-它包含许多对我来说非常宝贵的信息。
您的边界始终为320x480,因为有人设置了您的transform
(这会影响frame
,但不会影响bounds
)。
确保视图控制器的视图的autoresizesSubviews
视图的autoresizesSubviews
设置为YES
并且添加的任何子视图都具有适当的autoresizingMask
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.