您可以有条件地设置的方向(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
。像这样的东西并不漂亮,但它有效:
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if(orientation == 0) //Default orientation
//UI is in Default (Portrait) -- this is really a just a failsafe.
else if(orientation == UIInterfaceOrientationPortrait)
//Do something if the orientation is in Portrait
else if(orientation == UIInterfaceOrientationLandscapeLeft)
// Do something if Left
else if(orientation == UIInterfaceOrientationLandscapeRight)
//Do something if right
否则,这篇文章似乎与您正在尝试做的事情相当相关:
为 iPad 横向启动应用程序
提案 2
您可以使用以下方法创建一个具有查找设备方向(即“deviceInfo”)的方法的类:
UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication]statusBarOrientation])
和
UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication]statusBarOrientation])
您还可以存储您想要的任何拉伸因子/尺寸/测量值。然后在view
里面-(id)initWithFrame:(CGRect)frame
你可以调用你的方法来检查方向(即deviceInfo.isLandscape?
)。然后设置你view
的autoresizingMask
等于 UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth
。然后,-(void)layoutSubviews
设置view.frame
等于您想要的任何尺寸:
CGRectMake(x-origin, y-origin, width, height);
这是获取当前方向的参考:
http://www.ddeville.me/2011/01/getting-the-interface-orientation-in-ios/
更改视图框架的尺寸相对简单,可以在 Apple 的文档或一些简单的谷歌搜索中找到。