UIDevice類使用內建的orientation屬性獲取裝置的物理方向。IOS裝置支援這個屬性的7個可能的值。
》UIDeviceOrientationUnknown:方向目前未知。
》UIDeviceOrientationPortrait:Home鍵在下。
》UIDeviceOrientationPortraitUpsideDown:Home鍵在上
》UIDeviceOrientationLandscapeLeft:Home鍵在左邊
》UIDeviceOrientationLandscapeRight:Home鍵在右邊
》UIDeviceOrientationFaceUp:裝置正面朝上
》UIDeviceOrientationFaceDown:裝置正面朝下
IOS 提供了兩個內建巨集,幫組確定裝置方向列舉值是縱向還是橫向的:既UIDeviceOrientationIsPortrait()和UIDeviceOrientationIsLandscape().能夠很方便的擴充套件UIDevice類,提供這些測試作為內建的裝置屬性。
在UIDevice擴充套件類中新增如下程式碼
@property (nonatomic , readonly)BOOL isLandscape; @property (nonatomic , readonly)BOOL isPortrait;
-(BOOL)isLandscape { return UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation); } -(BOOL)isPortrait { return UIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation); }
程式碼也可以直接訂閱裝置重定向通知。為此,可以把beginGeneratingDeviceOrientationNotification傳送給currentDevice單例。然後新增一個觀察者,捕獲隨後發生的UIDeviceOrientationDidChangeNotification更新。如你所期望的,可以通過呼叫UIDeviceOrientationDidChangeNotificationOrientationNotification來完成偵聽。