
위와 같이 스크롤뷰 내부에서 참여 멤버 수에 따라 스크롤뷰의 높이가 늘어났다 줄었다 동적으로 동작하게 구현을 해야하는 상황에서
스크롤뷰에 테이블뷰를 넣어 구현하게 된다면 좋은 구현 방법이 아니기 떄문에 다른 방법을 찾아 보았다.
그 대안으로 스크롤뷰 내부에서 테이블뷰를 사용하지 않고 커스텀뷰와 스택뷰를 사용하여 멤버를 추가하거나 삭제할 경우 자동으로 스크롤뷰의 전체 높이가 동적으로 변경되도록 구현하였다.
구현 방법
1. 커스텀 뷰 클래스 생성
class MemberInfoView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
setup()
}
func setup() {
// 레이아웃 코드 추가 ...
}
}
2. 멤버 수 만큼 스택뷰 내부에 커스텀뷰 추가
func insertMemberViewsInStackView() {
for i in 0 ..< (viewModel?.members.value.count ?? 0) {
let view = MemberInfoView()
view.nameLabel.text = viewModel?.studyMembers.value[i].name ?? ""
view.editButton.addTarget(self, action: #selector(tapEditMemberButton(_:)), for: .touchUpInside)
view.editButton.tag = i
memberInfoStackView.addArrangedSubview(view)
}
}
'iOS' 카테고리의 다른 글
| iOS - 공유하기 기능 (0) | 2023.08.06 |
|---|---|
| iOS - StackView에서 Subview 제거할때 주의점 (0) | 2023.07.24 |
| iOS - 텍스트의 특정 부분만 Bold 처리하기 (0) | 2023.06.11 |
| NavigationController 사용시 status Bar Style 바꾸기 (0) | 2022.12.15 |
| navigationBar + scrollView를 함께 사용할때 top 여백 없애는 방법 (2) | 2022.12.01 |