У меня есть UIActivityIndicator
, который работает так же хорошо, как в симуляторе/устройстве iPhone 3G, но он не работает на Simulator/Device для iPhone 4 (Retina). Я хотел бы упомянуть, что это на черном фоне.Индикатор UIActivity не работает на iPhone 4 (Retina)
ответ
У меня была аналогичная проблема когда-то назад. Это было решено, изменив стиль индикатора на UIActivityIndicatorViewStyleWhiteLarge
и придав контрастному цвету (я выбрал черный) фон. Проблема в том, что это не видно.
На самом деле стиль установлен как UIActivityIndicatorViewStyleWhiteLarge, а Background также черный. –
На самом деле я не заметил, что это действительно было в сером стиле, меняя его на белый, помогло мне, спасибо. –
Мне тоже помог изменить индикатор на серый, но я не совсем понимаю. Индикатор должен быть вполне допустимым даже на белом фоне (это certaily на старых iphones), почему тогда он скрыт на экране сетчатки? Я попытался установить цвет фона для чего-то другого, кроме белого, но большой белый еще не был виден – Lope
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 покажет.
Вы также должны добавить его в качестве подсмотра в представление, в котором вы хотите его показать.
Возможно, вы показываете прядильщик из нити, которая не является основной нитью? Вы можете попробовать это Assert, чтобы выяснить, являетесь ли Вы на главной теме:
NSAssert([[NSThread currentThread] isMainThread],
@"This should be run from the main thread.");
Если утверждают сломается, вы можете разослать призыв к главной теме:
dispatch_async(dispatch_get_main_queue(), ^{
// display the spinner
});
Во всяком случае, не видя код, который мы все просто гадаем.
Я создаю заставку, и она не работает в backthread. В любом случае, он работает в iPhone 3G и iPad. –
Покажите нам код. – zoul
Просьба пояснить, что вы подразумеваете под «нерабочим». Он отображается неправильно, не отображается на экране и т. Д. Скриншоты будут приятными. –
Не отображается. –