Swift 在 KINWebBrowserViewController 视图中允许横向
Swift Allow landscape in KINWebBrowserViewController view
我有一个 table,每个人都分配了一个 link。当点击一行时,link 在 KINWebBrowserViewController 视图中打开。我不希望 table 允许横向,但我希望网络浏览器允许它。我该怎么做?
一些代码:
let linkItem = linkLabels[indexPath.row] as String
let webBrowser = KINWebBrowserViewController()
let url = NSURL(string: linkItem)
webBrowser.actionButtonHidden = true
webBrowser.loadURL(url)
self.navigationController?.pushViewController(webBrowser, animated: true)
欢迎所有建议。谢谢:)
在 Xcode 项目的“常规 - 部署信息”部分,勾选应用中任何屏幕的所有允许方向。
iOS 在屏幕上可见的最根 UIViewController 中调用 supportedInterfaceOrientations
方法。如果 VC 覆盖了整个屏幕,那么更早的 VC 秒(更靠近根 viewController)不会调用该方法。
如果你的 webBrowser
VC 覆盖了整个屏幕,那么在里面放一个方法:
override func supportedInterfaceOrientations() -> Int { return Int(UIInterfaceOrientationMask.All.rawValue) }
如果webBrowser
没有覆盖整个屏幕,并且navigationController
仍然显示导航条,那么该方法将不会被调用,而navigationController
中的方法将被调用取而代之的是。所以,subclass UINavigationController
:
class CustomNC:UINavigationController {
override func supportedInterfaceOrientations() -> Int {
if visibleViewController is KINWebBrowserViewController { return Int(UIInterfaceOrientationMask.All.rawValue) }
return Int(UIInterfaceOrientationMask.Portrait.rawValue)
}
}
并将您的 UINavigationController 声明为 CustomNC
。我还没有测试代码,它可能有拼写错误,但该技术现在对我有用。
更多解释:CustomNC
是一种新的、更聪明的 UINavigationController
,您将要发明它。您可以将代码放在项目的任何 swift 文件中。它就像现有的 UINavigationController
,只是它改变了旋转时的行为。所以你希望它继承 UINavigationController 的所有行为,然后只是覆盖旋转位。这一点继承:
class CustomNC:UINavigationController {
这个位是最重要的:
override func supportedInterfaceOrientations() -> Int {
并且您需要告诉 Xcode 您的根 ViewController 是 CustomNC
而不是普通的 UINavigationController
。如果您使用故事板构建了项目,则可以单击 UINavigationController
到 select,然后将其 class 从 UINavigationController
更改为 CustomNC
Identity Inspector
选项卡位于 Xcode 的右上角。
我有一个 table,每个人都分配了一个 link。当点击一行时,link 在 KINWebBrowserViewController 视图中打开。我不希望 table 允许横向,但我希望网络浏览器允许它。我该怎么做?
一些代码:
let linkItem = linkLabels[indexPath.row] as String
let webBrowser = KINWebBrowserViewController()
let url = NSURL(string: linkItem)
webBrowser.actionButtonHidden = true
webBrowser.loadURL(url)
self.navigationController?.pushViewController(webBrowser, animated: true)
欢迎所有建议。谢谢:)
在 Xcode 项目的“常规 - 部署信息”部分,勾选应用中任何屏幕的所有允许方向。
iOS 在屏幕上可见的最根 UIViewController 中调用 supportedInterfaceOrientations
方法。如果 VC 覆盖了整个屏幕,那么更早的 VC 秒(更靠近根 viewController)不会调用该方法。
如果你的 webBrowser
VC 覆盖了整个屏幕,那么在里面放一个方法:
override func supportedInterfaceOrientations() -> Int { return Int(UIInterfaceOrientationMask.All.rawValue) }
如果webBrowser
没有覆盖整个屏幕,并且navigationController
仍然显示导航条,那么该方法将不会被调用,而navigationController
中的方法将被调用取而代之的是。所以,subclass UINavigationController
:
class CustomNC:UINavigationController {
override func supportedInterfaceOrientations() -> Int {
if visibleViewController is KINWebBrowserViewController { return Int(UIInterfaceOrientationMask.All.rawValue) }
return Int(UIInterfaceOrientationMask.Portrait.rawValue)
}
}
并将您的 UINavigationController 声明为 CustomNC
。我还没有测试代码,它可能有拼写错误,但该技术现在对我有用。
更多解释:CustomNC
是一种新的、更聪明的 UINavigationController
,您将要发明它。您可以将代码放在项目的任何 swift 文件中。它就像现有的 UINavigationController
,只是它改变了旋转时的行为。所以你希望它继承 UINavigationController 的所有行为,然后只是覆盖旋转位。这一点继承:
class CustomNC:UINavigationController {
这个位是最重要的:
override func supportedInterfaceOrientations() -> Int {
并且您需要告诉 Xcode 您的根 ViewController 是 CustomNC
而不是普通的 UINavigationController
。如果您使用故事板构建了项目,则可以单击 UINavigationController
到 select,然后将其 class 从 UINavigationController
更改为 CustomNC
Identity Inspector
选项卡位于 Xcode 的右上角。