clamp
Clamp
clamp
글쓰기 관리
전체 방문자
오늘
어제
  • 분류 전체보기 (509)
    • IOS (85)
    • SwiftUI+TCA+Combine (9)
    • RxSwift + MVVM (56)
    • Clean Architecture (12)
    • SWIFT (56)
    • iOS - TDD (2)
    • 디자인패턴 (4)
    • CS (56)
      • 알고리즘 (29)
      • 운영체제 (15)
      • 자료구조 (2)
      • 네트워킹 (4)
      • 기타 (6)
    • 회고 (0)
    • Firebase (18)
    • SwiftUI (10)
    • iOS - UIKit (11)
    • iOS - 오픈소스 (6)
    • 코딩테스트 (166)
      • 프로그래머스 (164)
    • 정보처리기사 (14)
    • GitHub (2)
글쓰기 / 관리자

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • uikit
  • ㅅ
  • Q
  • Swift

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
clamp

Clamp

[iOS] - IntrinsicContentSize, InvalidateIntrinsicContentSize()
IOS

[iOS] - IntrinsicContentSize, InvalidateIntrinsicContentSize()

2024. 1. 25. 14:44

IntrincContentSize

본질적인 컨텐츠 크기

 

UILabel, UIButton을 autoLayout으로 구현할 때 Width, Height를 지정해주지 않아도 에러가 발생하지 않는 이유는 IntrinsicContentSize프로퍼티에서 컨텐츠의 크기를 계산해주기 때문입니다.

 

 

UILabel, UIButton, UIProgressView 모두 루트뷰의 leading, top spacing만을 주었습니다. 모두 위치만 지정해주고 크기를 지정하지 않았습니다.

 

UILabel, UIButton은 모두 IntrinsicContentSize프로퍼티가가 Width, Height를 계산해주어서 크기를 정할 수 있지만 

 

UIProgressView는 IntrinsicContentSize로 크기를 알 수 없어서 에러가 발생합니다.

 

 

InvalidateIntrinsicContentSize()

 

view의 크기가 바뀌었을 때 IntrinsicContentSize를 통해 Size를 갱신하고 autoLayout이 업데이트 되도록 하는 메서드입니다.

 

활용하면 다음처럼 활용할 수 있습니다.

 

open class IntrinsicContentHeightTableView: UITableView {
    
    open override var contentSize: CGSize {
        didSet {
        // contentSize가 변경된 경우 invalidateINtrinsicContentSize()를 호출합니다.
            invalidateIntrinsicContentSize()
        }
    }

    open override var intrinsicContentSize: CGSize {
    // 호출되면 IntrinsicContentSize 프로퍼티를 통해 컨텐츠의 크기를 업데이트합니다.
        layoutIfNeeded()
        return CGSize(width: UIView.noIntrinsicMetric, height: contentSize.height)
    }
    
}

 

 

 

 

 

 

저작자표시 비영리 동일조건 (새창열림)
    'IOS' 카테고리의 다른 글
    • [iOS] - UICollectionView Compositional Layout
    • [iOS] Alamofire 네트워크 레이어 설계1. 에러처리 (feat. Rx)
    • [iOS] - ContentSize(셀 전체) 만큼 커지는 UITableView/UICollectionView
    • [iOS Error] - [RTIInputSystemClient remoteTextInputSessionWithID:performInputOperation:] perform input operation requires a valid sessionID .feat: RxSwift
    clamp
    clamp
    주니어 iOS개발자의 발악!!!!!!!

    티스토리툴바