gpt4 book ai didi

ios - 为什么加减两个#define'd 宏在 iPhone/Objective-c 上不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:10:35 24 4
gpt4 key购买 nike

在我的 iPhone 应用程序中,我的 .h 文件中有这个

#define ORIENTATION_IS_PORTRAIT UIDeviceOrientationIsPortrait([[UIDevice currentDevice] orientation])
#define FULLSCREEN_MODE ORIENTATION_IS_PORTRAIT?460:300
#define AD_HEIGHT ORIENTATION_IS_PORTRAIT?50:32
#define FULLSCREEN_MODE_WITH_AD FULLSCREEN_MODE - AD_HEIGHT //doesn't work

总而言之,我有一个检测方向的宏。当我的 UIWebView 处于全屏模式(通过按下按钮激活)时,我有另一个高度。我需要将广告保留在底部。但是,要获得 UIWebView 的高度减去广告高度,只会返回 AD_HEIGHT

此外,(FULLSCREEN_MODE + AD_HEIGHT) 仅返回 FULLSCREEN_MODE

此外,当使用常量时,我​​应该把它们放在哪里。我进行了搜索,但只能找到“在 .m 文件中”之类的答案,但是在哪里??

最佳答案

你想要的是这样的:

#define FULLSCREEN_MODE         (ORIENTATION_IS_PORTRAIT?460:300)
#define AD_HEIGHT (ORIENTATION_IS_PORTRAIT?50:32)
#define FULLSCREEN_MODE_WITH_AD (FULLSCREEN_MODE - AD_HEIGHT)

对于更复杂的表达式,我建议您将其包装在 do { ... } while(0) 中,而不是将它们组合在一起。

这里发生的是它被解析为:

UIDeviceOrientationIsPortrait([[UIDevice currentDevice] orientation]) ? 460 : 300 - UIDeviceOrientationIsPortrait([[UIDevice currentDevice] orientation]) ? 50 : 32

这不是你想要的数学。

关于ios - 为什么加减两个#define'd 宏在 iPhone/Objective-c 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4730769/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com