首先先了解一件事
iPhone 和 iPad 目前的版本分別為 3.1.3 及 3.2 (天秤寫這篇文章的當下)
而兩者的解析度分為 768*1024 和 320*480
因為解析度的大小的差異
讓一款 App 要在不同平台運行,似乎是重新撰寫符合的解析度比較好
或是直接讓同一款 App 可以同時支援兩個不同平台也是不錯的選擇
雖然 App 可以編譯成 Universal 的版本
不過不代表程式碼就可以寫一次同時通吃兩邊
大部份的情況下,還是得依 iPhone 或是 iPad 的解析度來做修改
甚至是重新撰寫程式碼
1. 修改成支援 Universal 版本
在選單的 Project >Edit Project Settings 設定為 iPhone/iPad
iPhone OS 版本 Base SDK 可以設為 3.0 或 3.1
2. 判斷不同的平台,載入不同的 xib
因為 iPhone 和 iPad 的解析度不同
所以如果用 Interface Builder 建立的 xib 也必須依不同平台來製作
例如
MainViewController.xib (for iPhone)
MainViewControllerHD.xib (for iPad)
然後程式判斷目前運行的平台,載入不同的 xib
UI_USER_INTERFACE_IDIOM() 這個巨集,可以用來判斷目前是哪個平台
但是有個問題,這個巨集是 v3.2 以上台有定義
所以我們可以另外再做個函式來讓 V3.0 以上的版本都可以正確判斷
-(bool) isIpad
{
BOOL iPad = NO;
#ifdef UI_USER_INTERFACE_IDIOM
iPad = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad);
#endif
return iPad;
}
最後在載入 xib 的程式碼中,加入判斷式
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after app launch
if ([selfisIpad] == TRUE)
[windowaddSubview:mainViewControllerHD.view];
else
[windowaddSubview:mainViewController.view];
[windowmakeKeyAndVisible];
returnYES;
}
iPhone 執行結果
iPad 執行結果
1 意見:
冒昧的請問 那麼設計師在設計給universal的app圖檔 是要用iphone4的高解析下去設計嗎? 還是說要製作兩種解析度的圖呢? 謝謝
張貼留言