作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在常规目标设置中为我的应用启用了横向:
一切正常 - 该应用程序可用于所有选定的方向...
现在我想在只有一个 View 上禁用横向模式。
我在特定的 View Controller 上尝试了以下操作:
- (BOOL)shouldAutorotate
{
return NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
不幸的是没有成功......
编辑:
我的应用程序的结构是:
UITabBarController
UINavigationController
UITableViewController
UIViewController
最佳答案
你是把上面的代码放在view的ViewController里还是NavigationController里?你需要把它放在导航 Controller 中,否则导航 Controller 会旋转,导致 View 也旋转。子类 UINavigationController 并覆盖 shouldAutoRotate:
- (BOOL)shouldAutorotate
{
id currentViewController = self.topViewController;
if ([currentViewController isKindOfClass:[ViewController class]])
return NO;
return YES;
}
因此,只有当显示的 View 是您不想旋转的 View 时,导航 Controller 才会旋转。
编辑
UITabBarController 内部:
- (BOOL)shouldAutorotate
{
if([self.selectedViewController isKindOfClass:[UINavigationController class]]){
UINavigationController *navigationController = (UINavigationController *) self.selectedViewController;
id currentViewController = navigationController.topViewController;
if ([currentViewController isKindOfClass:[ViewController class]])
return NO;
}
}
return YES;
}
关于ios - 如何在 iOS 7/8 的单个 View 上禁用横向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29052478/
我是一名优秀的程序员,十分优秀!