我想扩展视图以响应对显示三角形的单击,但动画没有按照我想要的方式运行。
(对不起,如果 gif 没有循环。该工具应该创建一个循环动画,但显然没有......)
当它展开时,外部视图会立即改变大小,然后内容会向上动画回到原位。当它折叠时,大小再次立即改变,然后内容在其中滚动。我想要的是动画大小的变化,显示/隐藏内容而不使它们相对于封闭视图的左上角移动。
我的代码如下所示:
NSAnimationContext.runAnimationGroup({
context in
context.duration = 0.25
context.allowsImplicitAnimation = true
// Order is important so we don't get conflicting constraints
if newValue {
closedConstraint.isActive = false
openConstraint.isActive = true
}
else {
openConstraint.isActive = false
closedConstraint.isActive = true
}
layoutSubtreeIfNeeded()
}, completionHandler: {
self.disclosureButton.integerValue = newValue ? 1 : 0
})
openConstraint
将封闭视图的底部约束到最后一个字段的底部。closedConstraint
将其限制在顶部文本标签的底部,因此只有标签可见。
那么我该如何 a) 为封闭视图的边界设置动画并且 b) 在动画期间将内容固定在顶部?