【问题标题】:How to use this macro [duplicate]如何使用这个宏[重复]
【发布时间】:2014-03-09 05:15:50
【问题描述】:

大家好,我在 .pch 中定义了这些

#define HIDE_TABBAR
#define SHOW_TABBAR

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

还有

#if IS_IPHONE_5
HIDE_TABBAR=568 
#else
HIDE_TABBAR=480 
#endif

#if IS_IPHONE_5
SHOW_TABBAR=519
#else
SHOW_TABBAR=431
#endif

基本上我想要做的是检查屏幕是否为 iphone 5,并根据屏幕大小设置定义变量并在 .m 代码中使用它。您能告诉我如何实现这一目标吗?

【问题讨论】:

    标签: ios iphone


    【解决方案1】:

    这样做

       if(IS_IPHONE_5)
        {
          // for iphone 5
        }
        else
        {
            // for non iphone 5
        }
    

    编辑:(wrt:避免在我的代码中使用 if/else)使用 Ternary operation

    【讨论】:

    • 最好解释一下为什么当前代码不起作用
    • 您好,我想在 .m 中使用 HIDE_TABBAR。我试图避免在我的代码中使用 if/else ..
    • @veereef 如果您的代码中有其他内容,则否? :P 你疯了吗?
    • 您不希望它在运行时更改吗?那么你可以在两个平台上都有一个应用程序?!我会创建一个帮助类,在其中我可以在运行时获取所有系统特定信息。
    • 这不会坏掉吗?当您运行应用程序并且正在进行呼叫等时,这些值肯定会发生变化......
    【解决方案2】:

    像这样:

    const int HIDE_TABBAR = IS_IPHONE_5 ? 568 : 480;
    const int SHOW_TABBAR = IS_IPHONE_5 ? 519 : 431;
    

    甚至:

    const int HIDE_TABBAR = IS_IPHONE_5 ? 568 : 480;
    const int SHOW_TABBAR = HIDE_TABBAR - 49;
    

    如果你真的必须为此使用宏(这是一种糟糕的编程,但嘿,这是你的应用程序):

    #define HIDE_TABBAR (IS_IPHONE_5 ? 568 : 480)
    #define SHOW_TABBAR (HIDE_TABBAR - 49)
    

    【讨论】:

    • 你好,谢谢,但这不能写在prefix.pch中,我必须将它添加到.m文件中吗?对吗?
    猜你喜欢
    • 2020-08-24
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多