2014-06-02 4 views
1

Я хочу, чтобы добавить текст на видео, так что я читать этот учебник: Учебник Рэя - http://www.raywenderlich.com/30200/avfoundation-tutorial-adding-overlays-and-animations-to-videos Я только хочу, чтобы мой текст, который должен в течение первых 5 секунд видео, поэтому я добавил следующий код :CABasicAnimation не работает на 64-битном устройства

 subtitleText.opacity=1.0; 
    CABasicAnimation *animationMid = [CABasicAnimation animationWithKeyPath:@"opacity"]; 
    [animationMid setDuration:Video.duration-5]; 
    [animationMid setFromValue:[NSNumber numberWithFloat:0.0]]; 
    [animationMid setToValue:[NSNumber numberWithFloat:0.0]]; 
    [animationMid setBeginTime:5]; 
    [animationMid setFillMode:kCAFillModeRemoved]; 
    [subtitleText addAnimation:animationMid forKey:@"animationOpacity"]; 

Все отлично работает на 32-битной тренажере, iPhone 4, iPhone 4s, но когда я развернуть на iPhone 5s или тренажере 64bit текст не исчезает после 5 секунд в видео.

Я искал, но ни один документ не упоминает эту проблему. Пожалуйста помоги!

EDIT: Я признаю, что этот код выглядит странно, но он выполняет свою работу на iPhone 4/4S. Во-первых, я написал как это, но он не работает (на любом устройстве):

subtitleText.opacity=1.0; 
    CABasicAnimation *animationMid = [CABasicAnimation animationWithKeyPath:@"opacity"]; 
    [animationMid setDuration:0.0]; 
    [animationMid setFromValue:[NSNumber numberWithFloat:1.0]]; 
    [animationMid setToValue:[NSNumber numberWithFloat:0.0]]; 
    [animationMid setBeginTime:5]; 
    [animationMid setFillMode:kCAFillModeForwards]; 
    [subtitleText addAnimation:animationMid forKey:@"animationOpacity"]; 
+0

Это странно выглядящая анимация. Например, 'toValue' и' fromValue' совпадают. Кроме того, beginTime должен быть 'CACurrentMediaTime + theDelay'. –

+0

Я только что добавил '[animationMid setBeginTime: CACurrentMediaTime +5];' но не повезло. Также см. Мое редактирование для объяснения странного кода. – munnie

ответ

-1

Это странный способ добиться того, что вы хотите. Вместо того, чтобы иметь анимацию длиной 5 сек, у вас есть анимация, которая работает почти по всей длине видео. Креатив, тем не менее, но вы совсем не оживляете - вы хотите скрыть текст после 5 секунд.

Почему бы не просто вызвать блок после задержки 5 секунд?

subtitleText.opacity = 1.0; 
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 5 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ 
    subtitleText.opacity = 0.0; 
}); 
+0

Это безошибочный способ вызова кода после окончания анимации! –

+0

Пожалуйста, объясните? Потому что анимации не происходит. – justMartin

+0

ОП использует CABasicAnimation –