在我的iOS应用中,我有一个constants.h类,其中定义了kBorderWidth。对于视网膜显示器,我希望将其设置为.5,以使边框的宽度为1像素,而在非视网膜显示器上,我希望其为1,以使其边框厚度保持为1像素而不小于像素的厚度。这是我现在的代码:

#define IS_RETINA ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] && ([UIScreen mainScreen].scale == 2.0))

#if __IS_RETINA == 1
    #define kBorderWidth .5
#else
    #define kBorderWidth 1
#endif

编译就很好,但是导致kBorderWidth为1。如何解决此问题,使其完成我想要的工作?

最佳答案

我确定的解决方案是Lanorkin建议的解决方案,它的定义如下:

#define kBorderWidth (1.0 / [UIScreen mainScreen].scale)

这是面向 future 的证明,非常简单,并且可以在我已经设置的constants.h文件中工作。

07-24 12:42