AutoLayout

ulls12·2024년 1월 15일
0

Swift TIL

목록 보기
31/60
  • 제약은 두 뷰 사이의 관계를 표현한다
  • view들의 제약을 가지고 AutoLayout Engine이 화면에 UI를 배치한다

UI를 화면에 배치하는 방법

  • Frame을 활용하여 코드로 작성
let frame = CGRect(x: 0, y: 0, width: 200, height: 200)
let subview = UIView(frame: frame)
self.view.addSubview(subview)
  • Frame을 직접 설정해서 화면을 배치하면 각 기기별로 화면 비율이 다르기 때문에 각 기종마다 세팅을 전부 해줘야하는 골치 아픈 일이 생긴다.
  • 상대적인 제약이 필요한 이유는 결국 다양한 사이즈의 기기를 한 개의 제약(코드)으로 대응하기 위해서다.
  • AutoLayout 사용 시 코드 요약
let subView = UIView()
subView.translatesAutoresizingMaskIntoContraints = false
self.view.addSubview(subView)
leadingAnchor.constraint(equlTo: view.leadingAnchor)
  • 제약과 관련된 메서드를 입력 시켜주면 된다
    • IpadOS의 Split View, size class, 화면 회전 대응 (portrait & landscape) 대응
    • 정확한 수치로 분기하지 않고, 그룹화해서 대응할 수 있다

절대적 vs 상대적

  1. size 200 의 뷰 (width 200, height 200)
    -> 어느 기기에서나 200 x 200
  2. VC의 류트뷰에서 각 모서리가 20씩 떨어져 있는 뷰
    -> 기기 사이즈에 따라 달라짐

CHCR

  • CH: content hugging
    -> 공간을 채워야할 때, Priority가 낮은 뷰가 늘어난다
  • CR: content resistance
    -> 공간이 부족할 때, Priority가 낮은 뷰가 찌그러진다

Scroll View 제약 잡기 TIP

  1. 스크롤 뷰의 제약 잡기
    스크롤 뷰와 전체 뷰 간의 제약을 잡아 놔야 한다
  2. Content Layout Guide의 제약
    스크롤 뷰에 나올 컨텐츠의 크기를 알려줘서 스크롤이 되게 만들어 줘야 한다
  • 한마디로 scene <-> split view, split view <-> content layout 간의 두 관계를 모두 제약 잡아야 한다
profile
I am 개발해요

0개의 댓글