現在interfaceOrientation
在UIViewController
propery已被棄用,建議檢測當前設備方向的方式是什麼?如何知道iOS 8中的當前interfaceOrientation?
回答
爲iPad
[[UIDevice currentDevice] orientation];
您可以使用[UIApplication sharedApplication].statusBarOrientation
注重的是[[UIDevice currentDevice] orientation]
是不完全一樣您的應用程序旋轉。文檔:
討論: 的屬性的值是表示所述設備的當前取向恆定。該值表示設備的物理方向,可能與應用程序用戶界面的當前方向不同。有關可能值的說明,請參閱UIDeviceOrientation。
我會檢查statusBarOrientation是否工作。
UIApplication.sharedApplication()。statusBarOrientation工作,除非你是從
func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator)
其中早,如果你正在使用viewWillTransitionToSize更新 設備換到新statusBarOrientation
因此基於取向調用它(而不是尺寸級別),你擰 ,並必須使用這樣的事情
extension UIViewController {
public var orientation : UIInterfaceOrientation? {
let orientation = UIDevice.currentDevice().orientation
var converted : UIInterfaceOrientation!
// UIApplication.sharedApplication().statusBarOrientation is trash cause it lags (being set to the value predating the transition reported by viewWillTransitionToSize)
switch orientation {
case .Portrait: // Device oriented vertically, home button on the bottom
converted = .Portrait
case .PortraitUpsideDown: // Device oriented vertically, home button on the top
converted = .PortraitUpsideDown
case .LandscapeLeft: // Device oriented horizontally, home button on the right
converted = .LandscapeLeft
case .LandscapeRight: // Device oriented horizontally, home button on the left
converted = .LandscapeRight
default:
// let the caller do the dirty dancing with the status bar orientation or whatever
return nil
}
return converted
}
}
,你會使用像這樣:
// willRotateToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation, duration: NSTimeInterval) is deprecated.
// thusly I have to use the size classes method and compute interface orientation from the device orientation
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
guard let converted = orientation else {
// alert("something else that I do not [need to] handle")
return
}
if converted.isLandscape {
adjustViewsForOrientation(converted, withTransitionCoordinator: coordinator)
} else if converted.isPortrait {
adjustViewsForOrientation(converted, withTransitionCoordinator: coordinator)
}
}
我不知道如何擺脫這個勇敢的新世界的(吸住)undeprecating willRotateToInterfaceOrientation 他們與autoresizingMask一樣的工作方式有說服力的appple的短 (除了他們有意識,不貶低autoresizingMask ;-)
即或注入interfaceorientation作爲第三參數到 viewWillTransitionToSize(尺寸:CGSize,withTransitionCoordinator協調器:UIViewControllerTransitionCoordinator)
在斯威夫特你可以用
let orientation: UIInterfaceOrientation = UIApplication.shared.statusBarOrientation
- 1. 如何知道當前PC
- 2. 如何知道xamarin iOS中的當前故事板名稱?
- 3. 如何知道當前的rescursion級別?
- 4. 如何知道OS的當前顏色?
- 5. iOS:如何知道用戶是否離開當前屏幕?
- 6. OpenTok iOS SDK - 如何知道當前版本?
- 7. Calendar.getInstance()如何知道當前年份?
- 8. 在Django中,我如何知道當前登錄的用戶?
- 9. 如何知道D3.js中的當前縮放級別
- 10. JavaScript如何知道Rails 3中的當前語言環境?
- 11. JSON.stringify() - 如何知道替換器中的當前深度
- 12. 如何使用os.time()知道腳本中的當前時間?
- 13. 如何知道C#中BinaryReader的當前偏移量?
- 14. 如何知道當前屏幕是Android中的全屏模式
- 15. 如何知道.net中的當前在線用戶
- 16. 如何知道iPhone中的當前位置?
- 17. 如何知道/更改Python shell中的當前目錄?
- 18. Lastpass如何知道Chrome中的當前網址
- 19. 如何知道彙編代碼中的當前進位標誌?
- 20. 如何知道Android回購中的當前版本?
- 21. 如何知道當前請求超過ASP.Net中的maxRequestLength?
- 22. 我如何知道linux中當前連接的卷號
- 23. 如何知道當前正在運行的線程並將其停止iOS
- 24. 如何在ios 8中獲取當前位置lat?
- 25. 如何當PID知道
- 26. 如何知道當前元素是否被選中
- 27. 如何知道當前目錄樹中是否存在文件
- 28. 如何獲得ios 8當前的高度?
- 29. 如何知道當前正在運行的作業的狀態
- 30. 如何在保存之前提前知道當前新對象的ID?
得到它,但我很好奇,如果這仍然一樣'UIInterfaceOrientation' – cocoapriest 2015-01-15 15:47:26
不,它不是。有一種醜陋的方式可能會導致一個單獨的答案,因爲它太大而不能發表評論。 – 2016-12-30 13:09:37