如何使用CCUIViewWrapper定位视图

时间:2011-11-08 20:10:57

标签: ios xcode uiview cocos2d-iphone

我正在使用http://www.cocos2d-iphone.org/forum/topic/6889中的代码在Cocos2d游戏中向屏幕添加UIView。它非常适用于非视网膜分辨率(一切都正确定位),但在视网膜分辨率下,UIView被放置在不同的位置。我用来将视图添加到游戏中的代码与网站上的代码基本相同:

 UIView *myView = [[[UIView alloc] init] autorelease];
 myView.backgroundColor = [UIColor redColor];
 CCUIViewWrapper *wrapper = [CCUIViewWrapper wrapperForUIView:myView];
 wrapper.contentSize = CGSizeMake(100, 100);
 wrapper.position = ccp(50,50);
 [self addChild:wrapper];

视网膜从非视网膜的左下角开始出现50px,从左侧出现0px,在视网膜上出现100px。

2 个答案:

答案 0 :(得分:1)

视网膜模式下包装的定位为ccp(320,0)。不知道为什么,但它确实有效。

    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] == YES && [[UIScreen mainScreen] scale] == 2.00) {
        wrapper.position = ccp(320,0); //Retina
    } else {
        wrapper.position = ccp(160,240); //Normal
    }

答案 1 :(得分:0)

CCUIViewWrapper(至少以论坛帖子的形式)不使用CC_CONTENT_SCALE_FACTOR()。这意味着它与Retina显示器不兼容。

您可以通过提供适当缩放的尺寸和位置来解决这个问题,这可能会或可能不会起作用:

wrapper.contentSize = CGSizeMake(100 * CC_CONTENT_SCALE_FACTOR(), 
                                 100 * CC_CONTENT_SCALE_FACTOR());
wrapper.position = ccp(50 * CC_CONTENT_SCALE_FACTOR(), 
                       50 * CC_CONTENT_SCALE_FACTOR());