2011-03-22 8 views
0

Я использую следующий код для переключения между двумя разными скинами/темами в приложении ipad. Код отлично работает в симуляторе, но не на устройстве. Может ли кто-нибудь дать какие-либо предложения относительно того, почему это может произойти?Код работает на iPhone-симуляторе, но не на устройстве

if (skin == 1) { 

      UIImage* skinSelector = [UIImage imageNamed:@"button1.png"]; 
      self.imgSkinSelector = [[UIImageView alloc] initWithImage:skinSelector]; 
      self.imgSkinSelector.center = CGPointMake(88, 88); 
      self.imgSkinSelector.alpha = 0; 
      [self.landscape addSubview:self.imgSkinSelector]; 


    } 

    else { 

      UIImage* skinSelector2 = [UIImage imageNamed:@"button2.png"]; 
      self.imgSkinSelector = [[UIImageView alloc] initWithImage:skinSelector2]; 
      self.imgSkinSelector.center = CGPointMake(74, 74); 
      [self.landscape addSubview:self.imgSkinSelector]; 
    //  self.skinSelector.hidden = 1; 


    } 
+0

Что именно не работает? Вы пытались его отладить? Какая линия дает неожиданный результат? Вы действительно предоставили недостаточно подробностей ... – Vladimir

+0

Почему центры отличаются друг от друга, если вы выбираете другую кожу? – JohnnyBizzle

+0

есть момент, когда прикосновение обнаруживает skin2/theme2, и когда он снова коснулся, открывается skin1/theme1 и т. Д. ... возможно, это было из-за того, что центральные точки не были выключены. Я бы подумал, что центр, который выключается, также имел бы такой же результат в симуляторе, как и на устройстве. – hanumanDev

ответ

1

Попробуйте это:

Во-первых, не Alloc imgSkinSelector каждый раз, когда вы хотите изменить свою тему. Alloc/Init только один раз в вашей функции viewDidLoad/loadView, как показано ниже:

self.imgSkinSelector = [[UIImageView alloc] init]; 

Тогда в вашей функции, где вы меняющаяся тему, используйте этот код:

if (skin == 1) { 

[self.imgSkinSelector setImage:[UIImage imageNamed:@"button1.png"]]; 
self.imgSkinSelector.center = CGPointMake(88, 88); 
self.imgSkinSelector.alpha = 0; 
[self.landscape addSubview:self.imgSkinSelector]; 

} еще {

[self.imgSkinSelector setImage:[UIImage imageNamed:@"button2.png"]]; 
self.imgSkinSelector.center = CGPointMake(74, 74); 
[self.landscape addSubview:self.imgSkinSelector]; 

Надеюсь, это сработает для вас.

+0

Я бы также удалил вызов 'addSubView' как в' if', так и 'else'. Вы не хотите добавлять один и тот же вид несколько раз. – Hemant

+0

Спасибо Хеманту за то, что указали это ... :) – Prabh

2

Однажды я столкнулся с проблемой, когда симулятор правильно выбирал ресурсы (изображения), но не устройство (iPhone).

По крайней мере, в моем случае это было в случае имен изображений. Убедитесь, что имя изображения точно так, как написано в коде (button.png/button.png и т.д.)

Просто догадка ...

2

может б некоторые проблемы с изображениями это показывает штраф в тренажере, но а не в устройстве ... просто попробуйте использовать вместо этого другое изображение. спасибо

Смежные вопросы