首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在IOS 7中实现宏?

如何在IOS 7中实现宏?
EN

Stack Overflow用户
提问于 2014-12-07 23:05:15
回答 1查看 349关注 0票数 0

我试着为所有的IOS设备做通用的应用程序,除了下面的iPhone 4,我有这个宏可以在iOS8上工作:

代码语言:javascript
复制
#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] nativeBounds ].size.height - ( double )1136 ) < DBL_EPSILON )

#define IS_IPHONE_6 ( fabs( ( double )[ [ UIScreen mainScreen ] nativeBounds ].size.height - ( double )1334 ) < DBL_EPSILON )

下面是我使用的代码:

代码语言:javascript
复制
-(id)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {
   SKSpriteNode *background;

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {

    if (IS_IPHONE_6) {
        background = [SKSpriteNode spriteNodeWithImageNamed:@"Background-667"];
    }
   else if (IS_IPHONE_5) {
        background = [SKSpriteNode spriteNodeWithImageNamed:@"Background-568"];
    }else{
        background = [SKSpriteNode spriteNodeWithImageNamed:@"Background"];
    }
    }else{
        background = [SKSpriteNode spriteNodeWithImageNamed:@"Background~iPad"];
    }
         background.anchorPoint = CGPointMake(0.5, 1);
    background.position = CGPointMake(self.size.width/2, self.size.height);
    [self addChild:background];

}
return self;
}

但这些宏不适用于iOS7来检测优化的图像。在这个论坛的How to detect iPhone 5 (widescreen devices)?中,他们说你需要把这段代码放进去,它就会起作用

代码语言:javascript
复制
#define IS_WIDESCREEN_IOS7 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )
#define IS_WIDESCREEN_IOS8 ( fabs( ( double )[ [ UIScreen mainScreen ] nativeBounds ].size.height - ( double )1136 ) < DBL_EPSILON )
#define IS_WIDESCREEN      ( ( [ [ UIScreen mainScreen ] respondsToSelector: @selector( nativeBounds ) ] ) ? IS_WIDESCREEN_IOS8 : IS_WIDESCREEN_IOS7 )

但是当我这样做的时候,应用程序崩溃了。

我需要添加什么才能使其正常工作?我是一个初级开发人员,不明白这个宏是如何工作的。

EN

回答 1

Stack Overflow用户

发布于 2014-12-08 16:33:01

IS_WIDESCREEN被正确写入,因为它询问系统是否可以响应消息-nativeBounds

对于IS_IPHONE_6和5,你应该写一些像宽屏宏这样的东西,-nativeBounds只在iOS8中实现,这就是为什么如果你在iOS7上启动你的应用程序,它就会崩溃。

使用Xcode中的图像资源,您可以通过简单地创建一个图像资源来加载不同屏幕大小的不同图像,从而实现您想要的效果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27343980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档