我正在使用以下代码行检测设备方向:
UIDevice.currentDevice().orientation.isPortrait.boolValue
UIDevice.currentDevice().orientation.isLandscape.boolValue
我检测到它是否是带有此代码的iPad:
userInterfaceIdiom == .Pad
我在commonInit()
函数中使用了此代码,该函数在Init()
函数中调用。当我在iPad上执行我的代码时,前两行返回false
这两个不正确,其中一行应该是true
。第三行工作正常。
如果我在其他函数中使用代码,例如supportedInterfaceOrientations()
,它可以正常工作。你知道这可能是什么问题吗?
答案 0 :(得分:1)
您可能忽略了此文档:
您还可以使用UIDevice实例来检测设备的更改 特征,如身体取向。你得到了最新的 使用orientation属性或接收更改的方向 通过注册的通知 UIDeviceOrientationDidChangeNotification通知。 使用前 要获得方向数据,要么必须启用这些技术 使用beginGeneratingDeviceOrientationNotifications进行数据传递 方法即可。当您不再需要跟踪设备方向时,请致电 endGeneratingDeviceOrientationNotifications方法禁用 提交通知。
此外,这是一个三维方向。你可能不希望这样。简单地orientation
属性的实际值是多少?参见:
enum UIDeviceOrientation : Int {
case Unknown
case Portrait
case PortraitUpsideDown
case LandscapeLeft
case LandscapeRight
case FaceUp
case FaceDown }
你真正想要的可能是: "interfaceOrientation" is deprecated in iOS 8, How to change this method Objective C
有时TraitCollections不能满足您的所有设计需求。对于 在这些情况下,Apple建议比较视图的界限:
如果view.bounds.size.width> view.bounds.size.height { // ...}