Don_Mag icon

StackView show/hide arranged subview

Don_Mag | PRO | 08/25/21 01:58:14 PM UTC | 0 ⭐ | 7532 👁️ | Never ⏰ | []
Swift |

2 KB

|

None

|

0 👍

/

0 👎

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

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎