作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经设置了一个项目作为测试,使用AVSyncronizedLayer
在电影播放时在屏幕上移动红线(CALayer
)。
在执行此操作时,我引用了given here答案,并包含了该解决方案,但是当视频播放时动画不会开始。
如果有人对我要去哪里有任何想法,那将非常有帮助。代码是:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//create the red line sublayer
redLine = [CALayer layer];
redLine.backgroundColor = [UIColor redColor].CGColor;
redLine.frame = CGRectMake(engravingControl.frame.origin.x, engravingControl.center.y - (engravingControl.frame.size.height/2), 3, engravingControl.frame.size.height);
//create the AVplayer object
NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"IMG_1306" withExtension:@"mov"];
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:fileURL options:nil];
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset];
AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem];
AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
playerLayer.frame = CGRectMake(0, 0,400,300);
playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
//add the subViews
[self.view.layer addSublayer:playerLayer];
[self.view.layer addSublayer:redLine];
CABasicAnimation *redLineMove;
redLineMove=[CABasicAnimation animationWithKeyPath:@"transform.translation.x"];
redLineMove.duration=10;
redLineMove.fromValue=[NSNumber numberWithFloat:engravingControl.frame.origin.x];
redLineMove.toValue=[NSNumber numberWithFloat:engravingControl.frame.size.width + engravingControl.frame.origin.x];
redLineMove.beginTime = AVCoreAnimationBeginTimeAtZero;
//create the sync layer
AVSynchronizedLayer *syncLayer = [AVSynchronizedLayer synchronizedLayerWithPlayerItem:playerItem];
[syncLayer addSublayer:redLine];
[redLine addAnimation:redLineMove forKey:@"redLineMove"];
[self.view.layer addSublayer:syncLayer];
[player play];
}
最佳答案
我找到了解决方案。如果您没有以下代码行:
animation.removedOnCompletion = NO;
关于ios - 使用AVSynchronizedLayer时动画无法开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8554241/
我在制作动画时使用 AVPlayer 时间而不是系统时间时遇到问题。同步层无法正常工作,动画在系统时间而不是播放器时间上保持同步。我知道玩家确实在玩。如果我将 CACurrentMediaTime()
我有一个动画,使用 AVSynchronizedLayer 可以很好地处理本地视频文件。现在,当我用(同一文件的)流链接替换本地文件时,动画完全停止工作。我不知道是什么原因造成的,已经尝试了多次,它在
我试图在我的 addLayer 函数中添加一个 CALayer: @IBAction func addLayer(_ sender: UIButton){ self.layer = (self
我用多个 CALayer 创建了一个视频合成。当我尝试播放这个作品时,效果很好。而且,我一直在尝试调整 AVPlayerLayer 及其 SynchronizedLayer 的大小以全屏播放合成,av
我是一名优秀的程序员,十分优秀!