我需要在控制器中運行viewDidLoad方法之前檢測設備方向。我嘗試了所有在其他問題中提出的解決方案,但我無法解決。如何在viewDidLoad之前檢測設備方向?
什麼在Xcode 5和iOS 7使用SotryBoard做到這一點的最好方法是什麼?
預先感謝您!
編輯:其實我使用
- (void)viewDidLoad {
[super viewDidLoad];
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
switch ([[UIDevice currentDevice] orientation]) {
case (UIDeviceOrientationPortrait):
// landscape layout
break;
default:
// portrait layout
break;
}
但它簡化版,工作...
解決:使用
- (void)viewDidLoad {
[super viewDidLoad];
if([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait || [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown) {
// Portrait
}
if([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeLeft || [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeRight){
// Landscape
}
}
你需要做什麼? –
不要混淆UIDeviceOrientation和UIInterfaceOrientation – jbat100
你不應該在'viewDidLoad'做佈局。在這裏,您可以設置數據模型並初始化視圖,但所有佈局應該在'viewWillLayoutSubviews'中完成,其中'self.view.frame'將準確地表示當前幀,並考慮旋轉。 –