구현내용
verticalStackView.axis = .vertical
horizontalStackView.axis = .horizontal
verticalStackView.addArrangedSubview(horizontalStackView)
동작원리
계층 구조:
UIStackView는 arrangedSubviews를 자동으로 관리하는 컨테이너 뷰입니다.
- 세로 스택(verticalStackView)이 행을 담당
- 가로 스택(horizontalStackView)이 열을 담당
→ 4x4 그리드 완성
분배 방식:
distribution = .fillEqually 설정시:
// 버튼 제약 조건 없이도 자동 균등 분할
horizontalStackView.distribution = .fillEqually
장점
let buttonTitles = [
["7", "8", "9", "+"], // 1행
["4", "5", "6", "-"], // 2행
["1", "2", "3", "×"], // 3행
["AC", "0", "=", "÷"] // 4행
]
반복문 처리 흐름
for row in buttonTitles { // 1. 행 추출
let horizontalStackView = UIStackView() // 행 컨테이너 생성
for title in row { // 2. 열 순회
let button = UIButton()
button.setTitle(title, for: .normal) // 버튼 생성
horizontalStackView.addArrangedSubview(button) // 행에 추가
}
verticalStackView.addArrangedSubview(horizontalStackView) // 세로 스택에 행 추가
}