3

私の場合、すべてのカスタムビューを備えた高度にカスタマイズされたiPhoneアプリがあります。iPhone 5の画面サイズを利用したいのですが、ビューには正確なレイアウトが必要であり、ビューにautoresizingMaskを設定するだけでは不十分です。

各ソースファイルにある種のプロジェクト全体の定義フラグを設定したいので、実行時にこの定義/フラグを設定する必要があります。私の特定のケースでは、おそらく次のようなヘッダーファイル定義をインポートできます。

if ( IS_IPHONE_5 ) {

/* 
   Set appropriate frames for the additional screen space
*/
}

else {

/* 
  Set views otherwise
*/
}

この質問は、完全に主観的なものではありません。プロジェクト全体の定義を設定および取得しようとしているすべての人に当てはまる可能性があります。おそらく別のケースは、カラーテーマまたは設定で変更できるものである可能性があります。

プログラムの実行中にこれらの定義を設定するにはどうすればよいですか?また、ソースファイル全体にこれらの定義を組み込むにはどうすればよいですか?

ありがとうございました。

4

1 に答える 1

7

APPNAME_prefix.pchアプリのファイルにマクロを配置するのと同じくらい簡単です。

#define IS_IPHONE_5 ([[UIScreen mainScreen]bounds].size.height == 568)

アプリケーション内のすべてのファイルがそれを使用できます。

別の提案として、私の好みは にカテゴリを追加しUIDevice、おそらく便宜上マクロも追加し、それを必要とするオブジェクト (つまり、ビュー内のオブジェクトとレイアウトを担当するコントローラー レイヤー) のみをインポートすることだと思います。へのモデルの結合を避けるためUIKit

たとえば、UIDevice+iPhone5.h次のとおりです。

#define IS_IPHONE_5 [[UIDevice currentDevice] isIPhone5]

@interace UIDevice (iPhone5)

- (BOOL)isIPhone5;

@end

UIDevice+iPhone5.m:

@implementation UIDevice(iPhone5Checking)

- (BOOL)isIPhone5
{
     return ([[UIScreen mainScreen]bounds].size.height == 568); //or however else you want to check
}

@end

あなたのニーズに最も適したもの。お役に立てれば!

于 2012-09-29T18:20:22.753 に答える