UIDevice设置方向不会更改视图边界

时间:2015-04-06 18:08:36

标签: ios cocoa-touch rotation

我打电话:

[[UIDevice currentDevice] setValue:[NSNumber numberWithInteger: UIInterfaceOrientationLandscapeLeft]
                                    forKey:@"orientation"];

然后我退出:

NSLog(@" = %@",NSStringFromCGRect(self.view.bounds));

我得到了:

2015-04-06 11:04:13.02 [1032:262526]  = {{0, 0}, {375, 667}}

这是在iPhone 6上。为什么bounds没有改变?

修改

所以我在另一个答案中看到[UIScreen mainScreen].bounds在使用setValue:forKey以编程方式设置轮换后给出了正确的尺寸。

然而,为什么view仍有纵向框架?这是延迟回应吗?我是否必须自己旋转视图?

2 个答案:

答案 0 :(得分:0)

如果您想更改界面方向,那么您应该关注此回调

 interfaceOrientation  property
– shouldAutorotateToInterfaceOrientation:
+ attemptRotationToDeviceOrientation
– rotatingHeaderView
– rotatingFooterView
– willRotateToInterfaceOrientation:duration:
– willAnimateRotationToInterfaceOrientation:duration:
– didRotateFromInterfaceOrientation:

我建议你也看看这个方法。

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceO‌​rientation

请参阅此docs

答案 1 :(得分:0)

调整你的代码 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceO‌​rientation if UIInterfaceOrientationLandscapeLeft{//code} else if UIInterfaceOrientationLandscapeRight{//code}