Detect if app is running in Slide Over or Split View mode in iOS 9

后端 未结 15 2473
死守一世寂寞
死守一世寂寞 2020-12-04 15:31

In iOS 9, is it possible to detect when an app is running in iOS 9\'s Slide Over or Split View mode?

I\'ve tried reading through Apple\'s documentation on iOS 9 mult

15条回答
  •  囚心锁ツ
    2020-12-04 16:19

    I made an edit to @Michael Voccola solution which fixed the problem for orientation

    I used this way in my situation to detect all iPad split screen state and handling layout Just call determineLayout() to get current layoutStyle

    private func getScreenSize() -> CGRect { 
         let size = UIScreen.main.bounds
         return size
    }
    
    private func getApplicationSize() -> CGRect {
        let size = UIApplication.shared.windows[0].bounds
        return size
    }
    
    enum LayoutStyle: String {
        case iPadFullscreen = "iPad Full Screen"
        case iPadHalfScreen = "iPad 1/2 Screen"
        case iPadTwoThirdScreeen = "iPad 2/3 Screen"
        case iPadOneThirdScreen = "iPad 1/3 Screen"
        case iPhoneFullScreen = "iPhone"
    }
    
    func determineLayout() -> LayoutStyle {
    
        if UIDevice.current.userInterfaceIdiom == .phone {
            return .iPhoneFullScreen
        }
    
        let screenSize = getScreenSize().size
        let appSize = getApplicationSize().size
        let screenWidth = screenSize.width
        let appWidth = appSize.width
    
        if screenSize == appSize {
    //       full screen
             return .iPadFullscreen
        }
    
        let persent = CGFloat(appWidth / screenWidth) * 100.0
    
        if persent <= 55.0 && persent >= 45.0 {
    //      The view persent between 45-55 that's mean it's half screen
            return .iPadHalfScreen
        } else if persent > 55.0 {
    //      more than 55% that's mean it's 2/3
            return .iPadTwoThirdScreeen
        } else {
    //      less than 45% it's 1/3
            return .iPadOneThirdScreen
        }
    }
    

提交回复
热议问题