我有两个应用程序,它们都迫使用户使用iPhone在横向模式,才能有更宽的屏幕,而不是一个高个子。
有一个问题我已经找到的东西是我的第一个观点看起来很好,但所有其他观点拿出挤压到一侧或修剪(取决于元素是否被设置为移动,调整其子视图(UIButtons,UIPicker,UIViews)或停留在相同的位置的视图尺寸改变)。 我所有的观点都设计在IB在横向方向。 我根本的UIWindow,我能想到的一切都在横向方向进行布局。 即使我的plist文件有UIInterfaceOrientationLandscapeRight标志设置。
现在,如果我加载我在同一时间所有的意见,我rootview控制器,然后我没有问题。 但是,如果我以后加载的意见,他们会被切去或挤压。
要解决这个问题的唯一方法是添加下面一行在我的代码,在一个新的视图翻转:
[coming.view setFrame:CGRectMake(0, 0, 480, 300)];
任何人都知道我为什么要做这个? 难道只是iPhone的假设加载的观点是小300x480除非Transform获取适用于他们?
谢谢。
PS。 这就是视图看起来像如果我上面描述的不叫SETFRAME,:
替代文字http://files.me.com/mahboud/ljhvun
是那些获得后的第一个加载的所有viewcontrollers将其屏幕同样挤了下来。 出于某种原因,第一视图 - 控制没有这个问题。
我想你想在你的应用程序的每个单一视图中使用横向模式。 而你要笔尖是横向模式了。 您可以调整在笔尖视图(0,0,480,300的状态栏,320无状态栏)。 设计你想要什么。 最后,在视图控制器没有返回的自动旋转。 最后变换角度和旋转。
我有一个类似的问题,问的问题上SO ,然后琢磨出来,并回答了它自己。 您可能要检查它。
一个合适的回答将取决于知道你是如何迫使横向。 如果您是通过这样UIViewController
和公司,它应该是比较简单; 其他方法可能更复杂。
在简单情况下,你应该能够覆盖shouldAutorotateToInterfaceOrientation:
您的视图控制器,安装在Interface Builder您的意见,并设置UIInterfaceOrientation
关键UIInterfaceOrientationLandscapeRight
在你的Info.plist和设置。
一个简单的方法,我解决了这个问题是有我的根视图控制器子类的UINavigationController,并实现shouldAutorotateToInterfaceOrientation处理横向视图即
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) ||
(interfaceOrientation == UIInterfaceOrientationLandscapeRight));
}
这推到导航控制器的每个视图控制器似乎出现在景观了。