Hello,
For sake of brevity I am trying to do the following but in code.
Here is what I managed to do in playgrounds:
class ViewController: UIViewController {
var buttonLayout: [[String]] { return [ ["-","7","8","9","-"], ["-","4","5","6","+"], ["-","1","2","3","*"], ["-",".","0","=","+"] ] } var masterStackView: StackView = { let stackView = StackView(frame: .zero) stackView.axis = .vertical //stackView.alignment = .fill //stackView.distribution = .fill stackView.translatesAutoresizingMaskIntoConstraints = false stackView.backgroundColor = .red return stackView }() let displayLabel: UILabel = { let display = UILabel() display.text = "0" display.font = UIFont.boldSystemFont(ofSize: 30) display.textAlignment = .right display.translatesAutoresizingMaskIntoConstraints = false display.backgroundColor = .gray return display }() var buttonStackView: StackView = { let stackView = StackView(frame: .zero) stackView.axis = .vertical stackView.distribution = .fillEqually stackView.translatesAutoresizingMaskIntoConstraints = false stackView.backgroundColor = .green return stackView }() var horizontalStackView: StackView { let stackView = StackView(frame: .zero) stackView.axis = .horizontal stackView.distribution = .fillEqually stackView.translatesAutoresizingMaskIntoConstraints = false stackView.backgroundColor = getRandomColor() return stackView } func setStackView() { for row in buttonLayout { let stackView = horizontalStackView buttonStackView.addArrangedSubview(stackView) for label in row { stackView.addArrangedSubview(createButton(withTitle: label)) } } } func createButton(withTitle: String) -> UIButton { let myButton = UIButton(type: .system) myButton.setTitle(withTitle, for: .normal) myButton.setTitleColor(.white, for: .normal) myButton.layer.borderColor = UIColor.cyan.cgColor myButton.layer.borderWidth = 1 myButton.titleLabel?.textColor = .blue myButton.translatesAutoresizingMaskIntoConstraints = false return myButton } override func viewDidLoad() { super.viewDidLoad() view.addSubview(masterStackView) setUpContriants() setStackView() masterStackView.addArrangedSubview(displayLabel) masterStackView.addArrangedSubview(buttonStackView) view.backgroundColor = .white } func setUpContriants() { view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[v0]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": masterStackView])) view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[v0]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": masterStackView])) }
}
My problem is with the display labels size. The labels size takes up most of the screen while the buttons are squeezed into the bottom portion of the screen
In the storyboard picture above the display label size is based on the size of the labels font.