动画子视图控制器视图
Posted
技术标签:
【中文标题】动画子视图控制器视图【英文标题】:Animating child view controller view 【发布时间】:2019-12-14 18:47:17 【问题描述】:我有一个子视图控制器,我想在父视图控制器上添加一个按钮。单击按钮时,我希望子 VC 从屏幕底部显示到屏幕的一半。 我试图为高度约束设置动画,但由于某种原因,它不会从屏幕底部开始。所以动画看起来很奇怪。它从底部上方开始并上下移动,直到达到我指定的恒定值。 这就是我所拥有的:
func setChildVC()
self.addChild(childVC)
mainView.addSubview(childVC.view)
childVC.didMove(toParent: self)
childVC.view.translatesAutoresizingMaskIntoConstraints = false
heightAnchor = childVC.view.heightAnchor.constraint(equalToConstant: 0)
NSLayoutConstraint.activate([
childVC.view.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
childVC.view.trailingAnchor.constraint(equalTo: self.view.trailingAnchor),
childVC.view.bottomAnchor.constraint(equalTo: mainView.bottomAnchor),
heightAnchor,
])
这就是我为高度设置动画的方式(目前在 viewDidLoad 上):
self.heightAnchor.constant = 350
UIView.animate(withDuration: 2)
self.childVC.view.layoutIfNeeded()
我尝试将childVC.view
的 y 轴设置在屏幕下方,但由于限制它不起作用。
【问题讨论】:
【参考方案1】:替换
self.childVC.view.layoutIfNeeded()
与
self.mainView.layoutIfNeeded()
为了正确测试它不要在viewDidLoad
里面尝试它太早了,为了不同的屏幕高度也这样做
self.heightAnchor.constant = self.view.frame.height / 2.0
【讨论】:
以上是关于动画子视图控制器视图的主要内容,如果未能解决你的问题,请参考以下文章