Mat*_*nen 36 multitasking ipad ios ios9
在iOS 9中,是否可以检测应用程序何时在iOS 9的"幻灯片放映"或"拆分视图"模式下运行?
我已经尝试通过Apple的iOS 9多任务处理文档阅读,但是没有运气好...
我问,因为我的应用程序中可能有一个功能,我想在幻灯片中打开应用程序时禁用该功能.
Tam*_*ola 34
只需检查您的窗口是否占据整个屏幕:
BOOL isRunningInFullScreen = CGRectEqualToRect([UIApplication sharedApplication].delegate.window.frame, [UIApplication sharedApplication].delegate.window.screen.bounds);
Run Code Online (Sandbox Code Playgroud)
如果这是错误的,那么您将在拆分视图或幻灯片中运行.
这是剪切的代码,它将自动保持此标志而不管旋转
-(void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection
{
// simply create a property of 'BOOL' type
isRunningInFullScreen = CGRectEqualToRect([UIApplication sharedApplication].delegate.window.frame, [UIApplication sharedApplication].delegate.window.screen.bounds);
}
Run Code Online (Sandbox Code Playgroud)
Dan*_*ark 17
只是另一种重新包装所有这些的方法
extension UIApplication {
public var isSplitOrSlideOver: Bool {
guard let w = self.delegate?.window, let window = w else { return false }
return !window.frame.equalTo(window.screen.bounds)
}
}
Run Code Online (Sandbox Code Playgroud)
那么你可以
UIApplication.shared.isSplitOrSlideOver 在斯威夫特 UIApplication.sharedApplication.isSplitOrSlideOver 在Objective-C中请注意,在Swift中,window对象是双重可选... WTF!
小智 10
我迟到了,但是如果你想要一个独立于方向工作的房产,试试这个:
extension UIApplication
{
func isRunningInFullScreen() -> Bool
{
if let w = self.keyWindow
{
let maxScreenSize = max(UIScreen.mainScreen().bounds.size.width, UIScreen.mainScreen().bounds.size.height)
let minScreenSize = min(UIScreen.mainScreen().bounds.size.width, UIScreen.mainScreen().bounds.size.height)
let maxAppSize = max(w.bounds.size.width, w.bounds.size.height)
let minAppSize = min(w.bounds.size.width, w.bounds.size.height)
return maxScreenSize == maxAppSize && minScreenSize == minAppSize
}
return true
}
}
Run Code Online (Sandbox Code Playgroud)
与 Dan Rosenstark 的解决方案类似,但改为在新的 iPad Pro 上工作,该解决方案似乎会报告不同的框架和 screen.bounds 高度,具体取决于它是否通过 Xcode 直接在设备上运行,或者是否通过 TestFlight 或通过编译和发布应用商店。当通过 AS 或 TF 时,高度将返回 980,而不是 1024,因为它应该像通过 Xcode 一样,导致它不可能返回 true。
extension UIApplication {
public var isSplitOrSlideOver: Bool {
guard let w = self.delegate?.window, let window = w else { return false }
return !(window.frame.width == window.screen.bounds.width)
}
}
Run Code Online (Sandbox Code Playgroud)