class StackViewController: UIViewController {
let stackView: UIStackView = {
let v = UIStackView()
v.axis = .vertical
return v
}()
override func viewDidLoad() {
super.viewDidLoad()
// two views to add to the stack view
let v1 = UIView()
let v2 = UIView()
// a "container" for the stack view
let stackContainer = UIView()
v1.backgroundColor = .red
v2.backgroundColor = .green
stackContainer.backgroundColor = .yellow
stackView.translatesAutoresizingMaskIntoConstraints = false
stackContainer.translatesAutoresizingMaskIntoConstraints = false
stackView.addArrangedSubview(v1)
stackView.addArrangedSubview(v2)
stackContainer.addSubview(stackView)
view.addSubview(stackContainer)
let g = view.safeAreaLayoutGuide
NSLayoutConstraint.activate([
// stack view "container" view Top: 40 / centerX
stackContainer.topAnchor.constraint(equalTo: g.topAnchor, constant: 40.0),
stackContainer.centerXAnchor.constraint(equalTo: g.centerXAnchor),
// stackView all 4 sides to "container" view
stackView.topAnchor.constraint(equalTo: stackContainer.topAnchor),
stackView.leadingAnchor.constraint(equalTo: stackContainer.leadingAnchor),
stackView.trailingAnchor.constraint(equalTo: stackContainer.trailingAnchor),
stackView.bottomAnchor.constraint(equalTo: stackContainer.bottomAnchor),
// both arranged subviews 240x160
v1.widthAnchor.constraint(equalToConstant: 240.0),
v1.heightAnchor.constraint(equalToConstant: 160.0),
v2.widthAnchor.constraint(equalTo: v1.widthAnchor),
v2.heightAnchor.constraint(equalTo: v1.heightAnchor),
])
let t = UITapGestureRecognizer(target: self, action: #selector(gotTap(_:)))
view.addGestureRecognizer(t)
}
@objc func gotTap(_ sender: Any?) -> Void {
// get a reference to the 2nd arranged subview
guard let v = stackView.arrangedSubviews.last else {
return
}
// hide / show
v.isHidden.toggle()
}
}
Comments
0 B
|👍
/👎
0 B
|👍
/👎
0 B
|👍
/👎