-1

定数 HEIGHT_WINDOW を定義しようとしていますが、ユーザーが iPhone 4 と iPhone 5 のどちらで実行しているかに依存させたいと考えています。ユーザーが使用している iPhone を確認する方法は既にあります。

次のようなことができる方法はありますか?

if (//is running on iPhone 4) {
    #define HEIGHT_WINDOW 300
} else {
    #define HEIGHT_WINDOW 400
}

誰かが何かヒントを持っていれば、私はそれを大いに感謝します - 繰り返しますが、ユーザーが iPhone 4 または iPhone 5 で実行しているかどうかに基づいて何かを #define したいだけです。

4

4 に答える 4

4

決定は実行時に行う必要があるため、コンパイル時にこれを行うことはできません。そのため、プリプロセッサ マクロを使用しようとしても意味がありません。代わりに通常の変数を使用します。

double windowHeight = [UIScreen mainScreen].bounds.size.height > 500
                    ? 400
                    : 300;
于 2013-08-26T04:55:58.560 に答える
1

これを試して

CGSize result = [[UIScreen mainScreen] bounds].size;
        if (result.height==480)
        {
           NSLog(@"iPhone 4 or 4s");
        }
        if (result.height==568)
        {
             NSLog(@"iPhone 5");
        }
于 2013-08-26T05:28:35.987 に答える
0

これには、定数の代わりに変数を使用することをお勧めします。マクロはこのようには機能しません。

int HEIGHT_WINDOW;
if (//is running on iPhone 4) {
    HEIGHT_WINDOW = 300
} else {
    HEIGHT_WINDOW = 400
}
于 2013-08-26T04:55:19.233 に答える
-1

私は自分のコードでこれを何度も行ってきましたが、間違いなく機能します。

#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )

if(!IS_IPHONE_5)
{
    [self.view setFrame: CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y , self.view.frame.size.width, 300)];
}
else
{
    [self.view setFrame: CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y , self.view.frame.size.width, 400)];
}
于 2013-08-26T04:56:27.763 に答える