我希望多人连接点对等选择器视图启动&像应用程序中的其他所有内容一样保持景观。
plist具有" 支持的界面方向"仅包含" 风景(右主页按钮)",但MCBrowserViewController
忽略它。
我尝试将子类化为override supportedInterfaceOrientations
,但根据此link,它并不支持此功能。适用于presentViewController
的{{1}}提供:
MCBrowserViewController
感谢您的帮助。
答案 0 :(得分:1)
我编写了一个非常基本的示例应用程序,并使用iOS 11.2对其进行了测试。对我来说,MCBrowserViewController
似乎遵守了应用级别的方向限制。
您应该通过提供application(_:supportedInterfaceOrientationsFor:)
的实施来检查您的应用委托是否未覆盖plist方向值。或者,如果您有UIApplication
的自定义子类,请确保它不会覆盖supportedInterfaceOrientations(for:)
。
我在这里包括完整的来源:
import UIKit
import MultipeerConnectivity
class ViewController: UIViewController {
var textField: UITextField?
let id = MCPeerID(displayName: "testpeer")
lazy var session = MCSession(peer: id)
override func viewDidLoad() {
super.viewDidLoad()
let button = UIButton(frame: CGRect(x: 100, y: 100, width: 0, height: 0))
button.setTitle("Browse", for: .normal)
button.backgroundColor = .red
button.addTarget(self, action: #selector(showBrowser), for: .touchUpInside)
button.sizeToFit()
view.addSubview(button)
}
@objc func showBrowser() {
let controller = MCBrowserViewController(serviceType: "test", session: session)
present(controller, animated: true)
controller.delegate = self
}
}
extension ViewController: MCBrowserViewControllerDelegate {
func browserViewControllerDidFinish(_ browserViewController: MCBrowserViewController) {
self.presentedViewController?.dismiss(animated: true)
}
func browserViewControllerWasCancelled(_ browserViewController: MCBrowserViewController) {
self.presentedViewController?.dismiss(animated: true)
}
}
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
return true
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>