Ios 以编程方式更改情节提要视图的高度

Ios 以编程方式更改情节提要视图的高度,ios,uiview,uistoryboard,Ios,Uiview,Uistoryboard,背景: 我在故事板中有一个正常的ui视图(称为statusView),它的高度为30,四个约束固定在前导、尾随、超级视图的顶部空间和其下的视图的底部空间 问题: 我的目标是改变statusView的高度,包括在用户执行动作时设置帧更改的动画。因此,statusView可以短到0,也可以高到100 我的期望是,如果statusView被约束到superview及其下面的最近邻居,当我改变其高度时,它应该自动“推”下面的视图 为了测试,我在视图中调用以下命令: self.statusView.fra

背景:

我在故事板中有一个正常的
ui视图
(称为
statusView
),它的高度为
30
,四个约束固定在前导、尾随、超级视图的顶部空间和其下的视图的底部空间

问题:

我的目标是改变
statusView
的高度,包括在用户执行动作时设置帧更改的动画。因此,
statusView
可以短到
0
,也可以高到
100

我的期望是,如果
statusView
被约束到superview及其下面的最近邻居,当我改变其高度时,它应该自动“推”下面的视图

为了测试,我在
视图中调用以下命令:

self.statusView.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 100.0)
self.statusView.setNeedsDisplay()
问题:尽管我将其设置为
0
,但是
statusView的高度仍为30

编辑:发布
情节提要
设置

这是
statusView
的设置:

如果您正在使用autolayout并希望为层次结构中的视图设置显式高度,则应使用autolayout进行设置。我假设在interface builder中设置了高度约束

@IBOutlet weak var statusViewHeightConstraint: NSLayoutConstraint!
为约束创建一个
IBOutlet
,并在interface builder中将其链接起来

@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)

如果使用autolayout并希望为层次中的视图设置显式高度,则应使用autolayout进行设置。我假设在interface builder中设置了高度约束

@IBOutlet weak var statusViewHeightConstraint: NSLayoutConstraint!
为约束创建一个
IBOutlet
,并在interface builder中将其链接起来

@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)

这是一个好主意-更改高度约束。我能通过约束设置高度变化的动画吗?太棒了。非常感谢!这是一个好主意-更改高度约束。我能通过约束设置高度变化的动画吗?太棒了。非常感谢!