UIDevice 设置方向不适用于 iPad
UIDevice set orientation not working on iPad
我想要实现的是,当用户按下按钮时,以编程方式模拟设备旋转到横向。
我的代码适用于 iPhone 设备但不适用于 iPad
let value = NSNumber(integerLiteral: UIDeviceOrientation.landscapeRight.rawValue)
UIDevice.current.setValue(value, forKey: "orientation")
ViewController.attemptRotationToDeviceOrientation()
有没有办法在 iPad 上实现同样的效果?
嗯,direct 解决方案非常简单,但它有一个缺点。通过在项目设置“常规”部分中将 需要全屏 设置为 true 来解决此问题。当然,这意味着您的应用不支持多任务处理,这可能不适合您的应用。
您如何检测设备方向的变化?如果你使用
func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator)
检测,那么iPad就不会调用了。你可以改用这个
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
coordinator.animate(alongsideTransition: { (_) in
let orient = UIApplication.shared.statusBarOrientation
if orient.isPortrait {
// portrait now
} else if orient.isLandscape {
// landscape now
}
}, completion: nil)
super.viewWillTransition(to: size, with: coordinator)
}
我想要实现的是,当用户按下按钮时,以编程方式模拟设备旋转到横向。 我的代码适用于 iPhone 设备但不适用于 iPad
let value = NSNumber(integerLiteral: UIDeviceOrientation.landscapeRight.rawValue)
UIDevice.current.setValue(value, forKey: "orientation")
ViewController.attemptRotationToDeviceOrientation()
有没有办法在 iPad 上实现同样的效果?
嗯,direct 解决方案非常简单,但它有一个缺点。通过在项目设置“常规”部分中将 需要全屏 设置为 true 来解决此问题。当然,这意味着您的应用不支持多任务处理,这可能不适合您的应用。
您如何检测设备方向的变化?如果你使用
func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator)
检测,那么iPad就不会调用了。你可以改用这个
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
coordinator.animate(alongsideTransition: { (_) in
let orient = UIApplication.shared.statusBarOrientation
if orient.isPortrait {
// portrait now
} else if orient.isLandscape {
// landscape now
}
}, completion: nil)
super.viewWillTransition(to: size, with: coordinator)
}