0

我遇到了一些布局问题,当我以纵向模式启动我的应用程序然后将其转换为横向模式时,之后打开的视图会返回错误的旋转值。

例如,我在从纵向模式旋转后以横向模式打开一个视图,当我记录旋转时它仍然返回纵向模式:

NSLog(@"%u", [[UIDevice currentDevice] orientation]); // 4
NSLog(@"%f / %f", self.view.frame.size.width, self.view.frame.size.height); // 748.000000 / 1024.000000

当我将 iPad 旋转到纵向模式并返回横向模式时,它会返回正确的尺寸

NSLog(@"%u", [[UIDevice currentDevice] orientation]); // 1
NSLog(@"%f / %f", self.view.frame.size.width, self.view.frame.size.height); // 1024.000000 / 704.000000

我需要做些什么来使新添加的视图适应旋转?

4

3 回答 3

3

在 viewWillAppear 方法中设置视图的新框架。这会将所有项目设置为正确的大小,如果您使用导航控制器,这将在推送和弹出视图时起作用。

于 2012-10-12T15:31:53.540 回答
0

这是因为您的视图第一次以纵向模式显示。所以你必须在 viewDidLoad 中手动检查和旋转视图。

if (UIInterfaceOrientationIsLandscape(orientation)) 
{

    [self.view setFrame:VIEW_LANDSCAPE_FRAME];

    //do more stuff

}
于 2012-09-19T11:02:01.503 回答
0

试试这个链接。它对我有用。最好在 中的链接中执行而willAppear不是在viewDidLoad. 还要确保您已在shouldAutorotateToInterfaceOrientation方法中返回所需的方向,并UIInterfaceOrientationinfo.plist.

于 2012-09-20T16:34:35.367 回答