UIStackView,通过调整动画大小隐藏子视图
Posted
技术标签:
【中文标题】UIStackView,通过调整动画大小隐藏子视图【英文标题】:UIStackView, hiding subview with resizing animation 【发布时间】:2018-06-14 12:34:46 【问题描述】:我在UIStackView
中看到了here 隐藏/显示子视图的非常流畅的动画。
我尝试在自己的应用程序中重现它,但遇到了问题。
在动画过程中隐藏的视图不会调整大小。它只是等到动画完成然后消失。与上述链接示例中的clear button
相对。
我的代码:
UIView.animate(withDuration: 0.5,
delay: 0.0,
usingSpringWithDamping: 0.9,
initialSpringVelocity: 1,
options: [],
animations:
self.acceptDeclineBar.isHidden = !newState
self.view.layoutIfNeeded()
,
completion: nil)
问题
UIStackView
是免费提供隐藏/显示调整大小的动画,还是我需要使用高度约束为自己实现它?
【问题讨论】:
您的视图 (self.acceptDeclineBar) 将在动画完成时隐藏。尝试在动画之前隐藏。 self.acceptDeclineBar.isHidden = !newState UIView.animate(withDuration: 0.5, delay: 0.0, usingSpringWithDamping: 0.9, initialSpringVelocity: 1, options: [], animations: self.view.layoutIfNeeded() , completion: nil) 看起来更好,但acceptDeclineBar
仍然没有像 clear button
那样从我的目标调整大小。
检查按钮超级视图的删除底部约束。
【参考方案1】:
您的视图(self.acceptDeclineBar)
将在动画完成时隐藏。尝试在动画之前隐藏。
self.acceptDeclineBar.isHidden = !newState
UIView.animate(withDuration: 0.3) [weak self]
self?.view.layoutIfNeeded()
或者你可以使用高度约束来代替隐藏
acceptDeclineBarHeightConstraint.constant = newState ? 60 (whatever Visbale size) : 0 (Hide)
UIView.animate(withDuration: 0.3) [weak self]
self?.view.layoutIfNeeded()
【讨论】:
更改HeightConstraint
是显而易见的想法,我认为UIStackView
可以免费调整大小:/
检查按钮超级视图的删除底部约束。以上是关于UIStackView,通过调整动画大小隐藏子视图的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Xcode 中调整 UIStackView 的子视图大小?
当 UIStackView 更改其排列的子视图时,UITableViewCell 不会调整大小