Get device current orientation (App Extension)

后端 未结 10 1475
执笔经年
执笔经年 2020-12-09 10:02

How to get device current orientation in an App Extension, I have tried below two methods but no success.

  1. It always return UIDeviceOrientationUnknown

    <
10条回答
  •  情歌与酒
    2020-12-09 10:43

    I got an idea!

    extension UIScreen {
    
        var orientation: UIInterfaceOrientation {
            let point = coordinateSpace.convertPoint(CGPointZero, toCoordinateSpace: fixedCoordinateSpace)
            if point == CGPointZero {
                return .Portrait
            } else if point.x != 0 && point.y != 0 {
                return .PortraitUpsideDown
            } else if point.x == 0 && point.y != 0 {
                return .LandscapeLeft
            } else if point.x != 0 && point.y == 0 {
                return .LandscapeRight
            } else {
                return .Unknown
            }
        }
    
    }
    

    EDIT: On Swift 4 you can do:

    extension UIScreen {
        var orientation: UIInterfaceOrientation {
            let point = coordinateSpace.convert(CGPoint.zero, to: fixedCoordinateSpace)
            switch (point.x, point.y) {
            case (0, 0):
                return .portrait
            case let (x, y) where x != 0 && y != 0:
                return .portraitUpsideDown
            case let (0, y) where y != 0:
                return .landscapeLeft
            case let (x, 0) where x != 0:
                return .landscapeRight
            default:
                return .unknown
            }
        }
    }
    

提交回复
热议问题