iOS7とiOS6の両方に対応するときに気をつけること

http://blog.ittybittyapps.com/blog/2013/11/08/working-with-ios-6-and-7/

1 comment | 0 points | by Jshiike 約4年前


Jshiike 約4年前 | ▲upvoteする | link

オーストラリアのスマホアプリ開発会社Itty Bitty Appsがブログで、iOS7とiOS6の両方に対応するときに注意すべきポイントをいくつか取り上げています。


1) Layout issue on iOS7


iOS7のプロパティ [UIViewController setEdgesForExtendedLayout:] はデフォルトが UIRectEdgeAll なので、コンテナがナビゲーションコントローラーのときは、レイアウトがナビゲーションコントローラーのトップからはじまってしまう。これだとiOS6で表示していたレイアウト最上部のテキストが隠れてしまうので、- (void)viewDidLoad メソッドに、



self.edgesForExtendedLayout = UIRectEdgeNone;



を加えて修正する。[修正後画面]


2) iOS6 runtime exception


iOS6でアプリを実行するとruntime exceptionになる場合、



[LAViewController setEdgesForExtendedLayout:]: unrecognized selector sent to instance 0x778a210



iOS7のAPIは適宜ラップしてあげること。



if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)])


{


self.edgesForExtendedLayout = UIRectEdgeNone;


}



3) Xcode 4 compiler error


Xcode 4.6で最新のコードをひっぱってくると、コンパイルに失敗する。



Property edgesForExtendedLayout not found on object of type LAViewController *


Use of undeclared identifier UIRectEdgeNone



そこで、マクロを書いて、



#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000


#define IOS7_SDK_AVAILABLE 1


#endif



iOS7のコードのパスを必要ならラップする。



#ifdef IOS7_SDK_AVAILABLE



#endif



4) UILabel background inconsistency


iOS7のデフォルトのバックグランドカラーはclearColorだが、iOS6はwhiteなので、明示的に指定する。



view.backgroundColor = [UIColor clearColor];



5) Hide status bar while in full screen


iOSで presentViewController を呼び出すと、デフォルトのモーダルスクリーンは全画面(UIModalPresentationFullScreen)。iOS7でも同じユーザエクスペリエンスを提供するために、



- (BOOL)prefersStatusBarHidden


{


return YES;


}



6) UIToolbar barStyle


iOS6とiOS7ではシステムキーボードのスキンカラーが違うので、



if ([[[UIDevice currentDevice] systemVersion] compare:@”7.0” options:NSNumericSearch] != NSOrderedAscending)


{


self.barStyle = UIBarStyleDefault;


}


else


{


self.barStyle = UIBarStyleBlack;//or UIBarStyleBlackTranslucent


}




Path: スクローリング時の画像表示を早くするiOSライブラリをオープンソースで提供


iOS: 地図にデータを効率よく表示する


Spotify: iOSのビルド作業時間を短縮する


Yelp: iOSアプリに組み込むweb viewをネイティブっぽく表現する



#モバイル #モバイルアプリ #iphone #ios

Back