繁体   English   中英

在Swift中使用动画更改UIView的超级视图

[英]Change UIView's super view with animation in Swift

我有一个VideoView (这是UIView的子视图)。

默认情况下,它被添加到UIView ,该UIView是屏幕角落的小视图(我称之为ParrentView1 )。

我有一个按钮可以缩小VideoView 此按钮执行的操作将VideoViewParentView1移除,并将其添加到更大的视图(称为ParrentView2 )中。

当我执行下面的代码时,它可以工作,但是动画很奇怪。 我需要的只是从ParrentView1ParrentView2的缩小动画。 这是我的代码:

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)

谢谢你的帮助

可能的原因是,将其添加到另一个视图时,它被分配了不同的框架。 解决方案是确保动画从原始位置开始。 就像是:

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中习惯以小写字母开头的变量名称。 当他们不这样做时,就会变得混乱。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM