Индикатор UIActivity не работает на iPhone 4 (Retina) - PullRequest
0 голосов
/ 28 января 2011

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

Ответы [ 3 ]

5 голосов
/ 28 января 2011

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

2 голосов
/ 31 января 2011

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 
}

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

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

0 голосов
/ 31 января 2011

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

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

В случае сбоя подтверждения вы можете отправить вызов в основной поток:

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

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

...