IOS/iOS

[TIL] iOS. View

iOS View는 on-demand Drawing Model입니다

on-demand Drawing Model 개념

  • 뷰는 다양한 컨텐츠를 표시하는데 매번 다시 그리는 것은 비효율적이라서

  • Generating bitmap cache를 사용합니다.

  • 처음에 뷰를 생성할때

  • 이후 컨텐츠가 변경되지 않고 단순히 크기나 위치가 변경된다면 다시 그리지 않고 캐시를 호출합니다.

     

     

  • 크기나 위치가 변경( 캐시호출) 되거나 뷰가 교체( 다시그리기)될때

  • bitmap cache 를 재사용하는 방법

    • Content Mode
      • 기본값 = Scale To Fill - 항상 프레임의 크기에 이미지를 맞춥니다 ( 종횡비 변경가능성 )
      • Aspect Fit - 이미지의 크기를 프레임의 높이에 맞춥니다

View의 역할

  1. 화면에 contents를 출력하는 것( 고유한 프레임을 가지고 있고 모든 작업은 프레임내부에서 출력됩니다. 프레임 외부에서 출력되면 잘라낼수 있습니다)
  2. Handling Touch Events 터치 이벤트를 처리하는 것 - 뷰에서 직접처리, 슈퍼뷰에 전달 Label, ImageView 처럼 터치이벤트를 처리하지 않는 뷰는 속성을 통해 활성화 할수있습니다
  3. Laying out Subviews 서브뷰의 배치를 관리하는 것 입니다.
  • 뷰계층에서 가장아래에 있는 것은 superview이고 위로 쌓일수록 subview가 늘어납니다 뷰는 서브뷰 여러개를 가질수 있지만 superview는 반드시 하나입니다.
  • 슈퍼뷰는 서브뷰를 배열로 관리합니다.
  • 서브뷰는 항상 슈퍼뷰의 속성에 영향을 받습니다. (이동, 슈퍼뷰의 투명도 등)

View의 좌표체계

  • 기준점은 왼쪽 위가 0, 0 이됩니다.

  • 모든 위치와 단위는 포인트를 사용합니다.

  • 각 컨텐츠는 지역좌표를 가지고 있고 안의 컨텐츠를 표시할때는 고유의 지역좌표를 사용하지만 해당뷰의 위치를 지정할때는 슈퍼뷰의 지역좌표를 사용합니다.

  • 뷰의 위치와 크기를 하나로 묶어 프레임이라 합니다

	Frame

Struct CGRect {
	var origin: CGPoint  // 원점
		var size: CGSize   // 사이즈
  }

// 좌표를 통해위치를 지정
Struct CGPoint {
	var x: CGFlat
	var y: CGFlat
  }

// 크기를 지정
Struct CGSize {
	var width: CGFloat
	var height: CGFloat
	}

var frame: CGRect
  • Frame 과 Bounds
    • Frame - 뷰안에서 컨텐츠의 위치와 크기 표현
    • Bounds - 뷰의 지역좌표 내에서 뷰의 크기를 표현합니다.

'IOS > iOS' 카테고리의 다른 글

[TIL] iOS. MVVM without Rxswift  (0) 2020.11.20
iOS. 유효성 검사 포맷( Validation Check )  (0) 2020.11.18
[TIL] iOS. Button  (0) 2020.11.14
iOS. Delegate, Protocol 이란 무엇인가.  (0) 2020.11.04
[TIL] iOS. APPlifecycle  (0) 2020.10.31