动画 AVPlayerLayer 转换 属性
Animate AVPlayerLayer transform property
我不想用 AVPlayerLayer
重现 Live Photo 缩放效果。为此,我使用 VideoView
:
class VideoView: UIView {
override class var layerClass: AnyClass {
return AVPlayerLayer.self
}
var playerLayer: AVPlayerLayer {
return layer as! AVPlayerLayer
}
var player: AVPlayer? {
get {
return playerLayer.player
}
set {
playerLayer.player = newValue
}
}
}
问题是,每当我尝试在视频播放期间更改视图或图层的 transform
属性 时,什么都没有改变。但是更改会在播放结束后应用。
动画示例:
func zoomIn() {
UIView.animate(
withDuration: 0.2,
delay: 0,
options: .allowAnimatedContent,
animations: {
self.transform = .init(scaleX: 1.1, y: 1.1)
},
completion: { _ in
})
}
似乎 AVPlayerLayer
忽略了许多 CALayer
属性,缩放 VideoView
的唯一方法是更改它的 frame
。
我不想用 AVPlayerLayer
重现 Live Photo 缩放效果。为此,我使用 VideoView
:
class VideoView: UIView {
override class var layerClass: AnyClass {
return AVPlayerLayer.self
}
var playerLayer: AVPlayerLayer {
return layer as! AVPlayerLayer
}
var player: AVPlayer? {
get {
return playerLayer.player
}
set {
playerLayer.player = newValue
}
}
}
问题是,每当我尝试在视频播放期间更改视图或图层的 transform
属性 时,什么都没有改变。但是更改会在播放结束后应用。
动画示例:
func zoomIn() {
UIView.animate(
withDuration: 0.2,
delay: 0,
options: .allowAnimatedContent,
animations: {
self.transform = .init(scaleX: 1.1, y: 1.1)
},
completion: { _ in
})
}
似乎 AVPlayerLayer
忽略了许多 CALayer
属性,缩放 VideoView
的唯一方法是更改它的 frame
。