我有一个应用程序,当它从横向更改为纵向时,需要更改它的尺寸,反之亦然。我已经注册了这样的通知:
NSNotificationCenter.defaultCenter().addObserver(self, selector: "rotated", name: UIDeviceOrientationDidChangeNotification, object: nil);
我收到通知,但有一个方案失败了。当我拿起手机时,将其切换为横向,然后将其平放在桌面上而不倾斜它,我收到通知,它已经改变了景观,但我得到的尺寸仍然是旧尺寸。这就是我的检查方式:
let isLandscape = UIDeviceOrientationIsLandscape(currentDevice.orientation);
这是一个日志:
纵向开始:
Landscape: false
Bounds (0.0, 0.0, 320.0, 568.0)
将手机放在旁边:
Landscape: true
Bounds (0.0, 0.0, 568.0, 320.0)
平躺在桌子上:
Landscape: false
Bounds (0.0, 0.0, 568.0, 320.0)
我是新手,所以也许我使用了错误的API。
答案 0 :(得分:0)
这是一个愚蠢的错误。我假设只有两个方向,但我查看了UIDeviceOrientation枚举,有几个:
case Portrait // Device oriented vertically, home button on the bottom
case PortraitUpsideDown // Device oriented vertically, home button on the top
case LandscapeLeft // Device oriented horizontally, home button on the right
case LandscapeRight // Device oriented horizontally, home button on the left
case FaceUp // Device oriented flat, face up
case FaceDown // Device oriented flat, face down
所以我认为"不是风景意味着肖像"不对。