因此,我想将主页的方向锁定为纵向,并且仅限主页。
我正在使用标签栏控制器,所以初始视图是标签控制器,但首先出现的视图控制器是第一个标签,例如主页。
我想这样做,以便当用户旋转设备时,它不会在此页面上旋转到横向。但是,所有其他页面都可以旋转。
搜了一圈,似乎没有什么是 iOS 7 特有的,而 iOS 7 特有的那个不行……</p>
请帮忙,谢谢!
下图描述了我不想在这个页面上发生的事情。
因此,我想将主页的方向锁定为纵向,并且仅限主页。
我正在使用标签栏控制器,所以初始视图是标签控制器,但首先出现的视图控制器是第一个标签,例如主页。
我想这样做,以便当用户旋转设备时,它不会在此页面上旋转到横向。但是,所有其他页面都可以旋转。
搜了一圈,似乎没有什么是 iOS 7 特有的,而 iOS 7 特有的那个不行……</p>
请帮忙,谢谢!
下图描述了我不想在这个页面上发生的事情。
在您的实施中实施以下内容
- (NSUInteger) supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
这应该会给你你正在寻找的结果!
使用此代码
@implementation UINavigationController (Rotation_IOS6)
-(BOOL)shouldAutorotate
{
return UIInterfaceOrientationMaskPortrait;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationPortrait;
}
@end
我想我找到了一个不错的解决方案。好吧,就我而言,我在故事板中使用 UISplitViewController 作为 rootController,但想法是一样的。
在要锁定旋转的视图中实现 shouldAutorotate()
class MyUISplitViewController: UISplitViewController {
override func shouldAutorotate() -> Bool {
if ((self.viewControllers.last) != nil && (self.viewControllers.last!.topViewController) != nil){
if (self.viewControllers.last!.topViewController!.respondsToSelector("shouldAutorotate"))
{
return self.viewControllers.last!.topViewController!.shouldAutorotate()
}
}
return true
}
}
在你的子 UIViewController
override func shouldAutorotate() -> Bool {
if (UIDevice.currentDevice().userInterfaceIdiom == .Phone)
{
return false
}else{
return true
}
}
如果你想检查支持的方向,你可以简单地使用supportedsupportedInterfaceOrientations()
编辑:
不要忘记在 Storyboard 根 viewController 中设置“MyUISplitViewController”类
问题是,正如您正确指出的那样,您的主页选项卡不是最顶层的视图控制器。
根据我对这个主题的有限知识,我只能想到以下几点:
shouldAutorotate
和supportedInterfaceOrientations
;