2012-02-28 11 views
0

私はiPhoneとiPadの両方に普遍的な私のアプリのためのいくつかのパラメータを定義したいと思います。マクロを使って定義し、実行時にそれらを判断しないようにしたい。それは次のようになります:プリコンパイル時にiPhone/ipadを検出する方法


#if TARGET_IPHONE_SIMULATOR 
#define SCROLL_SIZE_PORTRAIT CGSizeMake(768, 1024) 
#define SCROLL_SIZE_LANDSCAPE CGSizeMake(1024, 768) 
#else 
#define SCROLL_SIZE_PORTRAIT CGSizeMake(320, 460) 
#define SCROLL_SIZE_LANDSCAPE CGSizeMake(460, 320) 
#endif 

ただし、このマクロではiPhoneとiPadを区別できません。 他の方法がありますか?ありがとう。

答えて

0

あなたはユニバーサルアプリを作成したい場合は、これは間違いなく、コンパイラはアプリがアップフロントで実行されますどのようなデバイスを知っていないように行くための正しい方法ではありません。

マクロを使用しても、は実行時に評価する必要があります

実行時にデバイスをチェックする必要があります。これは、普遍的なアプリケーションがiPhoneまたはiPad上で実行されているかどうかを(定義によって)実際に知る唯一の時間です。

+0

ありがとうございます、あなたはこの考えが問題を抱えていることを私に思い出させます。 – scorpiozj

1

機能を使用します。

static inline CGSize scrollSizePortrait() 
{ 
    return [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad ? CGSizeMake(768, 1024) : CGSizeMake(320, 460); 
} 

static inline CGSize scrollSizeLandscape() 
{ 
    return [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad ? CGSizeMake(1024, 768) : CGSizeMake(460, 320); 
} 
関連する問題