2013-01-08 2 views
1

Какое лучшее решение для простой анимации текста/метки для iOS? Подробности: пользователю нужно увидеть одну метку на экране iOS с измененным текстом из массива de 10-15 слов, по одному поэтапному, разделенным белым экраном. Время показа одного слова составляет 800-900 мс, а время показа белого экран составляет 500 мс. Существует один вид теста внимания.Как создать текстовую анимацию iOS?

+0

Я сделал это раньше, используя только NSTimer. И это работает очень хорошо. –

ответ

3

Если вы просто хотите прошить слова, вы можете использовать NSTimer или просто performSelector:

@interface ViewController() 

@property (nonatomic, strong) NSArray *words; 
@property (nonatomic) NSUInteger wordIndex; 

@end 

@implementation ViewController 

static CGFloat const kWordShowInterval = 0.8; 
static CGFloat const kWordHideInterval = 0.4; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.words = @[@"one", @"two", @"three", @"four"]; 
    self.wordIndex = 0; 

    [self showWord]; 
} 

- (void)showWord 
{ 
    if (self.wordIndex >= [self.words count]) 
     return; 

    self.wordLabel.text = self.words[self.wordIndex]; 

    [self performSelector:@selector(hideWord) 
       withObject:nil 
       afterDelay:kWordShowInterval]; 
} 

- (void)hideWord 
{ 
    self.wordLabel.text = nil; 

    self.wordIndex++; 
    if (self.wordIndex < [self.words count]) 
    { 
     [self performSelector:@selector(showWord) 
        withObject:nil 
        afterDelay:kWordHideInterval]; 
    } 
    else 
    { 
     // all done, go ahead and invoke whatever you want to do when done presenting the words 
    } 
} 

@end 

Если вы хотите сделать анимацию появления или исчезновения текста (например, постепенно исчезать в или out), вы можете объединить это с animateWithDuration или другой конструкцией анимации.

+0

Роб, спасибо, это просто y полезный пример. С уважением. – Alexander

+0

Удивительный! Обратите внимание: если вы хотите, чтобы эта анимация продолжала обновляться, даже когда другие элементы пользовательского интерфейса идут (например, UIScrolLView), вам нужно запланировать повторяющийся процесс с помощью NSRunLoopCommonModes. –

0

Обычно основная анимация - лучший способ. Проверьте the documentation

+0

думаю нет. Если он действительно хотел оживить переход, поскольку метка переходит из текста в пустой или обратно ['animateWithDuration'] (http://developer.apple.com/library/ios/documentation/uikit/reference/uiview_class/UIView/UIView. html # // apple_ref/doc/uid/TP40006816-CH3-SW109) было бы намного проще. Но я думаю, что это не вопрос. – Rob

+0

OK, что может быть событием/диспетчером для начала шоу (для слова NNString: arrayWords), когда будет отображаться новая страница? Без взаимодействия с пользователем. Спасибо – Alexander

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