CABasicAnimation不适用于64位设备

时间:2014-06-02 10:31:15

标签: ios ios7 cabasicanimation avassetexportsession

我想在视频中添加文字,所以我按照本教程操作: 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"];

1 个答案:

答案 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;
});