Как позиционировать виды с помощью CCUIViewWrapper - PullRequest
1 голос
/ 09 ноября 2011

Я использую код из http://www.cocos2d -iphone.org / forum / topic / 6889 , чтобы добавить UIView на экран в игре Cocos2d.Он отлично работает в разрешении без сетчатки (все расположено правильно), но в разрешении сетчатки 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 ]

1 голос
/ 24 ноября 2011

Положение обёртки в режиме сетчатки 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
    }
0 голосов
/ 09 ноября 2011

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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...