通过代码更改堆栈高度,然后在 iOS swift 中重置它
Changing height of stack through code and then resetting it in iOS swift
我有一个高度为250的stackview。我想编程:
- 点击按钮时,堆栈应移至屏幕顶部。
- 然后几秒钟后它应该回到 250 的高度,这将通过 dispatchque.main.asynafter
完成
如何让它到达屏幕顶部,然后将其重置为原始高度?
The stack I want to go upto the top of the superview
- 确保您的
stackViewHeightConstraint
的优先级为 999
。
- 创建另一个约束,例如
stackView.topAnchor equalTo superview.topAnchor
(请勿激活它)。
- 当您按下按钮进入 展开 状态时,
激活这个
top-to-top
约束。
- 当您想回到正常状态时,停用此
top-to-top
约束。
更新
class ViewController: UIViewController {
@IBOutlet var stackView: UIStackView!
// Assumes that stackView is added as a subview in self.view
private lazy var topToTopConstraint: NSLayoutConstraint = {
stackView.topAnchor.constraint(equalTo: self.view.topAnchor)
}()
@IBAction func expand() {
NSLayoutConstraint.activate([topToTopConstraint])
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) { [weak self] in
guard let self = self else { return }
NSLayoutConstraint.deactivate([self.topToTopConstraint])
}
}
}
我有一个高度为250的stackview。我想编程:
- 点击按钮时,堆栈应移至屏幕顶部。
- 然后几秒钟后它应该回到 250 的高度,这将通过 dispatchque.main.asynafter 完成
如何让它到达屏幕顶部,然后将其重置为原始高度? The stack I want to go upto the top of the superview
- 确保您的
stackViewHeightConstraint
的优先级为999
。 - 创建另一个约束,例如
stackView.topAnchor equalTo superview.topAnchor
(请勿激活它)。 - 当您按下按钮进入 展开 状态时,
激活这个
top-to-top
约束。 - 当您想回到正常状态时,停用此
top-to-top
约束。
更新
class ViewController: UIViewController {
@IBOutlet var stackView: UIStackView!
// Assumes that stackView is added as a subview in self.view
private lazy var topToTopConstraint: NSLayoutConstraint = {
stackView.topAnchor.constraint(equalTo: self.view.topAnchor)
}()
@IBAction func expand() {
NSLayoutConstraint.activate([topToTopConstraint])
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) { [weak self] in
guard let self = self else { return }
NSLayoutConstraint.deactivate([self.topToTopConstraint])
}
}
}