我有一个支持所有设备方向的iPhone应用程序,但我有一个特定的模态视图,我只想在横向上显示。显示模态视图,其方向不同于设备的方向
如果设备处于横向方向,它可以正常工作,但如果设备在纵向方向上保持不变,则不会显示我想要的方式。
由于设备以纵向方向保持,所以图像被裁剪并且左侧和右侧离开显示器的边缘。由于图像的高度仅与狭窄的尺寸一样高,因此顶部和底部显示父视图的背景。如果我然后旋转设备到横向方向,那么一切都很好。
在我的研究,我经常遇到shouldAutorotateToInterfaceOrientation,但我相信这是当设备在物理上旋转,只有被炒鱿鱼这并不适用于我的情况的事件。该设备在物理上保持纵向,但我想显示该视图,就好像它在横向上一样。
[UIApplication的sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight]也提到但我从来没有看到有什么影响时,我一直在使用它尝试。
所以我想我的问题是,如果有一种简单的方法来强制视图的初始显示方向不同于设备的物理方向,以及如何执行此操作。
我使用下面的逻辑来模态地显示我的观点:
TitleViewController *titleController = [[TitleViewController alloc] initWithNibName:@"TitleViewController" bundle:[NSBundle mainBundle]];
titleController.delegate = self;
titleController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:titleController animated:YES];
[titleController release];
我想在风景方向始终显示模式的看法,即使设备处于纵向举行。
UPDATE
找到一个可行的解决方案:
if (self.interfaceOrientation == UIInterfaceOrientationPortrait)
{
self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(90));
self.view.bounds = CGRectMake(0.0, 0.0, 480, 320);
}
然而,随着取向UIInterfaceOrientationPortraitUpsideDown处理时,最初显示与正确方向的视图,但然后转变回一个肖像方向与剪裁的两侧,并显示图像上方和下方的背景。
我已经尝试调整角度为270,-90和其他值,但总是在面向UIInterfaceOrientationPortraitUpsideDown方向时恢复为纵向。
为什么?
问题是,在最终请求并显示模态视图之前,方向可能会改变很多次并处于任何方向。 – GRW 2011-12-16 20:15:18