iOS6 AutoLayout Storyboard and compatible to iOS5 |
2013/04/11 ~ 阿亮 ~ |
前陣子寫了「您的微新聞 」和「下一班高鐵 」(一個高鐵時刻表 App) iOS App,一開始是 iOS6 based,因為 iOS6 之後,有支援推播 (Push Notification) 以及社群分享(Social Share) 的功能,因為 iOS6 有支援 Facebook, Twitter, 變好寫很多。後來,有使用者說他還在用 iOS5,可能舊的機型,或者仍有 JB? 就試試支援一下 iOS5,但,有被整到 XD 記錄一下,免得忘了。
可是,真的有點想不管 iOS5 哩。。。又沒多少人 (<5%) ,就算支援,推播、分享又不能用 (煙~ )
一、iOS Deployment Target 要由原本 6.0 設成 5.0,如果有用 Cocoapods,pods project 也是要設。
二、將原本的 storyboard 拷貝一份,改成另一個,比如這裡的 MainStoryboard_iOS5.storyboard
以下這段做 storyboard 選擇的程式碼加到 AppDelegate.m 的
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) \ ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) // Pick storyboard if (!SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0")) { // for 5.x UIStoryboard *storyBoard; storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iOS5" bundle:nil]; UIViewController *initViewController = [storyBoard instantiateInitialViewController]; [self.window setRootViewController:initViewController]; }
三、 接下來,就針對 MainStoryboard_iOS5 的部份來處理,比如將此 Storyboard 的 Autolayout 關掉,並將 Document Versioning 改成 5.0
四、將 ViewControl 的以下,「可能」要關掉 “Resize View from NIB,不太確定,要試試。
五、Subview 「可能」要關掉 “Autoresize Subviews”,View Mode 也可能要改成 “Left”,不太確定,也是要試試。
六、navigation view 的 toolbar 似乎也易於 iOS6 變成亂亂的。
以上,很多東西,我也還不熟,若你有類似的需求,就參考看看吧。不保證是對的 XD
註: My Current Environment (2013.04)
Xcode version: 4.6.1