Notice
Recent Posts
Recent Comments
Link
관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 내부 크기에 따라 동적으로 width 길이가 증가하는 뷰 본문

iOS 응용 (swift)

[iOS - swift] 내부 크기에 따라 동적으로 width 길이가 증가하는 뷰

jake-kim 2021. 2. 19. 23:43

상황

  • 내부 크기가 동적으로 증가하는 경우 (label.text와 같은 경우), superView의 width를 동적으로 증가하여 내부 레이아웃을 유지할 수 있는 방법
  • 값에 따라 크기가 동적으로 늘어나는 - 예시) UILabel
let temporaryLabel = UILabel()
temporaryLabel.font = UIFont.systemFont(ofSize: 12)
temporaryLabel.text = "sampleDataString"
print(temporaryLabel.intrinsicContentSize) // (101.0, 14.5)

temporaryLabel.text = "sampleDataLongString ---- long ----"
print(temporaryLabel.intrinsicContentSize) // (209.0, 14.5)
  • UILabel을 contents로 가지고 있는 View에서, 내부 레이아웃은 변하지 않고 외부 View의 크기가 동적으로 증가할수 있는 방법?

Stack View 사용

  • Stack View의 width or height는 stack view내부에 존재하는 view의 size에 따라 동적으로 조절

Label이 있고 좌측, 우측 여백이 16으로 유지

  • StackView안에 width가 16인 empty뷰를 Label 왼쪽, 오른쪽에 배치 

  • Corner에 radius값 부여
stackView.layer.cornerRadius = 16
stackView.clipsToBounds = true
  • Label의 내용에 맞게 superView의 width값이 동적으로 조절

Comments