본문 바로가기

DEV

[iOS/Swift] UIStackView(arrangedSubviews: [ ])

반응형

기존에 StackView에 subView들을 추가할 때 아래와 같이 따로 외부에서 .addArangedSubview()를 이용해 작성했었다.

private lazy var scrollContentsVStack: UIStackView = {
    let stackView = UIStackView()
    stackView.axis = .vertical
    stackView.distribution = .equalSpacing
    stackView.alignment = .fill
    stackView.spacing = 24
    return stackView
}()


[bookInfoView, dedicationView, summaryView, chaptersView].forEach {
    scrollContentsVStack.addArrangedSubview($0)
}

 

하지만 초기화 시 convenience init(arrangedSubviews views: [UIView])를 이용해 바로 subView를 추가할 수 있었다.

https://developer.apple.com/documentation/uikit/uistackview/init(arrangedsubviews:)

 

init(arrangedSubviews:) | Apple Developer Documentation

Returns a new stack view object that manages the provided views.

developer.apple.com

 

따라서, 아래와 같이 UIStackView 생성 시 바로 추가하도록 수정을 해봤다.

private lazy var scrollContentsVStack: UIStackView = {
    let stackView = UIStackView(arrangedSubviews: [bookInfoView, dedicationView, summaryView, chaptersView])
    stackView.axis = .vertical
    stackView.distribution = .equalSpacing
    stackView.alignment = .fill
    stackView.spacing = 24
    return stackView
}()

 

이런 방식이 lazy를 이용하여 최적화할 때 더 도움이 될 것 같다고 한다.

반응형