3

Xcode を 5 にアップデートしたところです。アプリをビルドしようとしていますが、iOS7 では非常にきれいに見えますが、ツールバーに問題があります。ツールバーのボタンは、ステータス バーのすぐ近くにあります。Ui が何らかの変更を加えると、iOS 5 および 6 の UI が壊れます。最適なアプローチは何ですか? iOS 7 用に別のストーリーボードを作成することは良いアプローチと見なされますか? ツールバーの問題を解決する他の方法はありますか?

4

1 に答える 1

7

最善の方法は、変更を行う前に iOS バージョンに多くのチェックを追加することです。次のマクロを *_prefix.pch ファイルに配置します。

#define SYSTEM_VERSION_EQUAL_TO(v)                  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v)              ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v)                 ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v)     ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)

次に、iOS 7 固有の機能に次のように使用します。

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {
    self.automaticallyAdjustsScrollViewInsets = YES;
    // or anything. Above line not specific to question, just an example
}

Xcode 5 Interface Builder では、サイズ インスペクター (ユーティリティ (3 番目) 列の 4 番目のタブ) で iOS 7 と 6 以下の間のオフセットを指定し、ファイル インスペクター (1 列目のタブ) で 7 と < 7 のレンダリングを切り替えることもできます。ユーティリティ列)。これは通常、7 のレイアウトでステータス バーまたはナビゲーション バーを考慮しなければならない場合に役立ちます。

iOS バージョンの差分 レンダリングを切り替える

于 2013-09-19T21:17:27.217 に答える