-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 回答