我有一个VideoView
(这是UIView
的子视图)。
默认情况下,它被添加到屏幕角落的小视图UIView
中(我称之为ParrentView1
)。
我有一个缩小VideoView
的按钮。此按钮执行的操作将从VideoView
中删除ParentView1
并将其添加到更大的视图(称为ParrentView2
)中。
当我执行下面的代码时,它可以工作,但是动画很奇怪。我所需要的只是从ParrentView1
到ParrentView2
的缩小动画。
这是我的代码:
VideoView.removeFromSuperview()
ParrentView2.addSubview(VideoView)
UIView.animate(withDuration: 0.8, delay: 0,
usingSpringWithDamping: 1,
initialSpringVelocity: 1,
options: .curveEaseOut,
animations: {
VideoView.frame = ParrentView2.bounds
}, completion: nil)
感谢您的帮助
答案 0 :(得分:0)
可能的原因是,将其添加到另一个视图时,它被分配了不同的框架。解决方案是确保动画从原始位置开始。像这样:
CGRect originalRect = ParrentView2.convert(VideoView.frame, from:VideoView.superView);
VideoView.removeFromSuperview()
ParrentView2.addSubview(VideoView)
VideoView.frame = originalRect;
UIView.animate(withDuration: 0.8, delay: 0,
usingSpringWithDamping: 1,
initialSpringVelocity: 1,
options: .curveEaseOut,
animations: {
VideoView.frame = ParrentView2.bounds
}, completion: nil)
一个改进点:请注意,在Swift中习惯以小写字母开头的变量名。如果他们不这样做,就会感到困惑。