我正在使用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。
答案 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());