0

У меня есть UIActivityIndicator, который работает так же хорошо, как в симуляторе/устройстве iPhone 3G, но он не работает на Simulator/Device для iPhone 4 (Retina). Я хотел бы упомянуть, что это на черном фоне.Индикатор UIActivity не работает на iPhone 4 (Retina)

+2

Просьба пояснить, что вы подразумеваете под «нерабочим». Он отображается неправильно, не отображается на экране и т. Д. Скриншоты будут приятными. –

+0

Не отображается. –

ответ

5

У меня была аналогичная проблема когда-то назад. Это было решено, изменив стиль индикатора на UIActivityIndicatorViewStyleWhiteLarge и придав контрастному цвету (я выбрал черный) фон. Проблема в том, что это не видно.

+0

На самом деле стиль установлен как UIActivityIndicatorViewStyleWhiteLarge, а Background также черный. –

+0

На самом деле я не заметил, что это действительно было в сером стиле, меняя его на белый, помогло мне, спасибо. –

+0

Мне тоже помог изменить индикатор на серый, но я не совсем понимаю. Индикатор должен быть вполне допустимым даже на белом фоне (это certaily на старых iphones), почему тогда он скрыт на экране сетчатки? Я попытался установить цвет фона для чего-то другого, кроме белого, но большой белый еще не был виден – Lope

2

UIActivityIndicator не будет отображаться немедленно.

Если у вас есть код, такие как это:

//(pseudo-code) 
//Create UIActivityIndicator 
//show UIActivityIndicator 
//do some other stuff expecting view to show 

UIActivityIndicator не будет отображаться, как UIActivityIndicator будет отображаться только на следующем цикле выполнения программы.

Вы можете обойти это

{ 
    //create UIActivityIndicator 
    //show UIActivityIndicator 
    [self performSelector:@selector(doOtherStuff) withObject:nil afterDelay:0]; 
} 

-(void)doOtherStuff { 
    //do stuff 
} 

performSelector означает, что doOtherStuff выполняется на следующем цикле выполнения, когда UIActivityIndicator покажет.

Вы также должны добавить его в качестве подсмотра в представление, в котором вы хотите его показать.

0

Возможно, вы показываете прядильщик из нити, которая не является основной нитью? Вы можете попробовать это Assert, чтобы выяснить, являетесь ли Вы на главной теме:

NSAssert([[NSThread currentThread] isMainThread], 
    @"This should be run from the main thread."); 

Если утверждают сломается, вы можете разослать призыв к главной теме:

dispatch_async(dispatch_get_main_queue(), ^{ 
    // display the spinner 
}); 

Во всяком случае, не видя код, который мы все просто гадаем.

+0

Я создаю заставку, и она не работает в backthread. В любом случае, он работает в iPhone 3G и iPad. –

+0

Покажите нам код. – zoul