2014-05-23 3 views
1

Я хочу сделать загрузку анимации. Когда я нажимаю кнопку, текст становится «загружать», а затем «загружать». затем «загрузка ..» и с самого начала. Как это сделать? Я пробовал [UIView animateWithDuration], но это не поможет.Анимированные точки при загрузке текста

+0

Просто используйте метод таймера, когда-либо один раз (или как долго), и добавьте. к строке. – CW0007007

ответ

3

Этого не очень сложно достичь. Создайте NSTimer свойство, а затем методы запуска/остановки/обновления, как так:

- (void)startLoadingAnimation { 
    [self.myButton setTitle:@"Loading" forState:UIControlStateNormal]; 
    self.myTimer = [NSTimer scheduledTimerWithTimeInterval:0.5f target:self selector:@selector(updateLoadingLabel) userInfo:nil repeats:YES]; 
} 

- (void)updateLoadingLabel { 
    NSString *ellipses = @"..."; 

    if ([self.myButton.titleLabel.text rangeOfString:ellipses].location == NSNotFound) { 
     [self.myButton setTitle:[NSString stringWithFormat:@"%@.",self.myButton.titleLabel.text] forState:UIControlStateNormal]; 
    } else { 
     [self.myButton setTitle:@"Loading" forState:UIControlStateNormal]; 
    } 
} 

- (void)endLoadingAnimation { 
    [self.myTimer invalidate]; 
    self.myTimer = nil; 
    [self.myButton setTitle:@"Loading" forState:UIControlStateNormal]; 
} 

В этом примере метка обновляется каждые 0,5 секунды.

+0

спасибо. он работает, но не так, как я ожидал. Старый текст «Загрузка» исчезает, появляется новый текст и мигает название кнопки. Как это исправить? Я могу добавить ярлык рядом с кнопкой и изменить только точки, но есть ли другой способ? – Ossir

+0

Начиная с iOS 7, когда вы меняете заголовок UIButton, он производит мигающую анимацию. Чтобы преодолеть это, вы можете либо изменить тип кнопки на Custom (или 'UIButtonTypeCustom' программно), либо вы можете скрыть кнопку при нажатии и заменить ее меткой до завершения загрузки. – sooper

+0

Спасибо. Теперь я скрываю кнопку и показываю ярлык, и это работает так, как я хотел! – Ossir

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