UIActivityIndicator в NavigationItem медленно появляется - PullRequest
0 голосов
/ 02 января 2012

Я использую UIActivityIndicator внутри UIBarButtonItem, чтобы показать активность, но индикатор медленно появляется. Я создаю это с помощью

UIActivityIndicatorView *innerActivityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0, 0, 20, 20)];
[innerActivityIndicator startAnimating];
self.activityIndicator = [[UIBarButtonItem alloc] initWithCustomView:innerActivityIndicator];

Затем переключение видимости с помощью

if(loading){
    [self.navigationItem setRightBarButtonItem:activityIndicator animated:true];
} else {
    [self.navigationItem setRightBarButtonItem:nil animated:true];
}

Обычно это занимает 4 или 5 секунд, прежде чем оно действительно появляется, и я понятия не имею, почему. Я изначально запускал / останавливал анимацию, но это тоже не сработало. У меня была эта проблема / эффект в двух приложениях, поэтому я, должно быть, делаю что-то не так.

Ответы [ 2 ]

1 голос
/ 02 января 2012

Вместо того, чтобы постоянно добавлять и удалять индикатор, попробуйте просто скрыть его, если вы не хотите, чтобы он появлялся.Вы можете сделать это, установив hidden в YES и NO, или, предпочтительно, установить hidesWhenStopped в YES и затем выполнить

if(loading){
    [self.activityIndicator startAnimating];
} else {
    [self.activityIndicator stopAnimating];
}

Один совет - запуститьActivityIndicator вращается до того, как выполнит какое-либо действие, которое займет некоторое время, и остановит его после завершения действия.Если вы запустите интенсивное действие перед запуском ActivityIndicator, это может объяснить время задержки.

0 голосов
/ 07 января 2012

Как отметил Марк Адамс, проблема заключалась в том, что я добавлял и удалял индикатор из фоновой нити с помощью GCD.

...