一般來說iPhone跟iPad一執行程式起來都是直立狀態
(PortraitOrientation)
如果想指定啟動後就是橫著的方向,設定的方式如下:
1. 因為是app一開始執行就要做的動作,
所以設定也是在一開始的ViewController裡面
{ProjectName}ViewController.m -->
- (BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)interfaceOrientation
2. 修改並指定interfaceOrientation朝左或右
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
or
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
補充說明一下 return YES的作法:
device會參考plist中的Supported interface orientations欄位,
有指定到的方向device會自己做旋轉動作.
另外,UIInterfaceOrientationLandscape與UIDeviceOrientationLandscape
的方向是剛好相反的(這特性可以被作為一些判斷依據)
3. 在參考資料的過程中,有這樣的需求是程式在iPhone跟iPad起始的方向要不同
一樣是在原處動手腳,加上一些判斷式就能夠分辨device種類了.
BOOL iPad = NO;
#ifdef UI_USER_INTERFACE_IDIOM
iPad = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad);
#endif
if (iPad) {
// 條件成立表示device為iPad,執行環境iOS3.2以上
} else {
// 條件不成立有兩種可能1.device是iPhone或iPod
// 2.執行環境iOS3.2以前版本不支援UI_USER_INTERFACE_IDIOM
}
有興趣可以看一下UI_USER_INTERFACE_IDIOM在UIDevice.h的定義
目前我執行起來沒有什麼問題~
網路上有很多討論,如果是universal apps又是another story了:)
很開心在網路上開始看到有人site我的文章了耶~
但是可以請好心的註明一下出處嗎?
參考資料: JEFF LAMARCHE's blogger
UIDevice Class Reference
Ole Begemann's blogger
Sangraal at Programbles
BillyGiggles at iphonedevsdk
2011/01/03 補充:
iOS version detection
既然有偵測device 型號的方法
iOS版本的偵測當然也不能缺席
#ifdef __IPHONE_3_0
// works on >= iOS 3.0
#else
// works on < iOS 3.0
#end
或
float ver = [[[UIDevice currentDevice] systemVersion] floatValue];
if (ver >= 3.0) {
// Only executes on version 3 or above.
}
資料來源:stackoverflow
沒有留言:
張貼留言