[英]Programmatically changing the height of a Storyboard view
背景:
我在Storyboard中有一个普通的UIView
(称为statusView
),其高度为30
,并且四个约束固定到超视图的前导,尾随,顶部空间,以及其下面的视图的底部空间。
问题:
我的目标是更改statusView
的高度,包括在用户执行操作时为帧更改设置动画。 这样, statusView
可以短至0
或高至100
。
我的期望是,鉴于statusView
视图及其下方的最近邻居,当我更改其高度时,它应自动“推”下面的视图。
为了测试,在viewDidAppear
,我调用以下代码:
self.statusView.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 100.0)
self.statusView.setNeedsDisplay()
问题 :但是,尽管我将其设置为0
,但statusView
的高度仍然为30。
编辑:发布的Storyboard
设置
如果您正在使用自动布局,并且想要为层次结构中的视图设置显式的高度,则应使用自动布局来实现。 我假设在界面生成器中设置了高度限制。
为约束创建一个IBOutlet
并将其链接到接口构建器中。
@IBOutlet weak var statusViewHeightConstraint: NSLayoutConstraint!
然后,假设这只是一个大小约束,且高度为常数,则只需在代码中进行更改即可:
statusViewHeightConstraint.constant = 100
您可以通过在修改约束后立即将布局调用包装在动画块中来动画化此更改。 像这样:
UIView.animateKeyframes(withDuration: 0.2, delay: 0.0, options: [.beginFromCurrentState, .calculationModeCubic], animations: {
self.view.layoutIfNeeded()
}, completion: nil)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.