오늘의 공부(32)

주방·2022년 8월 17일
0

Swift

목록 보기
15/17
post-thumbnail

#1. iOS Layout

가. Frame based Layout

  • Frame-based layout은 특정 뷰의 위치와 크기를 지정하는 것을 의미한다.
  • 특정 뷰의 위치, 크기를 지정했기 때문에 현재 화면의 크기와 상관없이 표시하게 되는데, 그렇게 될 경우 구현한 뷰의 사이즈가 현재 기기에 적정하게 표시되지 않을 수 있다.
  • 여러 기기에 대응하기 위해 Autoresizing Mask을 사용한다.

나. Autoresizing Mask

  • 슈퍼 뷰의 프레임이 변경될 때, 하위 뷰의 프레임을 자동으로 조정하는 방식

    • bounds? 자체적인 좌표계 내에서의 위치와 크기를 표시(뷰 영역 그 자체이다.)

      • bounds 사용처(View를 회전한 후 View의 실제 크기를 알고 싶을 때, View 내부에 그림을 그릴 때 (drawRect), ScrollView에서 스크롤링 할 때) / keyword - viewport
    • frame? superview의 좌표계 내에서의 위치와 크기

      • frame.origin: superView 좌표계에서의 해당 View가 그려지기 시작하는 위치
      • frame.size: 뷰가 차지하는 영역을 사각형으로 감싼 크기
      • frame 사용처(view의 위치와 크기를 나타낼 때)
    • bit mask: 컴퓨터의 언어인 이진수를 사용하면 연산이 빠른점을 이용해 어떤 정수를 이준수 형태로 표현하여 자료구조로써 사용하는 기법

  • 개념: Autoresizing mask를 사용하여, superview가 커지거나 줄어듦에 따라 subview의 크기나 위치를 조정

다. translatesAutoresizingMaskIntoConstraints

  • 오토리사이징마스크의 경우, 슈퍼뷰가 변함에 따라 subview의 크기를 어떻게 대응할지 알려주기 때문에 autolayout을 중복으로 사용할 수 없다.


#2. Assignment



#3. 회고

  • code base ui구성을 했을 때, 이전 storyboard 상에서 직접 구현하면서 ui를 확인할 수 있었던 점과 큰 차이를 느낄 수 있었다. storyboard 에서는 실제로 결과물을 직접 보고 확인할 수 있으며, 속성에 대해서 쉽게 확인이 가능하였다. 그러나 뷰가 많아질수록 무거워지고, 향후 협업시 충돌이 발생한다고 하니 code base ui구성에 서둘러 익숙해져야겠음을 느낄 수 있었음.
  • NSLayoutConstraints은 익숙치 않고, 표현에 있어 적응하기 쉽지 않았음. snapkit을 활용해 보다 쉽게 적용해볼 수 있었음. storyboard로 훈련을 하니 뷰에 대한 어느정도의 예상이 가능해 그나마 시도해볼 수 있는 것 같음.

0개의 댓글