我想在视频中添加文字,所以我按照本教程操作: Ray的教程 - http://www.raywenderlich.com/30200/avfoundation-tutorial-adding-overlays-and-animations-to-videos 我只希望我的文字在视频的前5秒出现,所以我添加了以下代码:
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秒钟后就不会消失。
我一直在搜索,但没有文件提到这个问题。请帮忙!
编辑: 我承认这段代码看起来很奇怪,但它在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 :(得分:-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;
});