일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- centOS7
- 데브옵스
- devops
- 컨테이너
- 부스트코스
- 네트워크
- swift 클로저
- kubernetes
- 쿠버네티스
- boj
- centOS
- linux
- 인프라
- 도커 이미지
- Swift
- os
- docker
- AWS
- ios
- NGINX
- 운영체제
- C++
- 도커 컨테이너
- Python
- 클라우드
- 도커
- 도커 명령어
- 프로세스
- k8s
- 리눅스
- Today
- Total
귀염둥이의 메모
[iOS] iOS의 뷰(View) 체계 본문
iOS View
- iOS에서 화면에 앱의 콘텐츠를 나타내기 위해
윈도우
와뷰
를 사용한다. 윈도우
는 그 자체로 콘텐츠를 표현할 수 없으며 애플리케이션의 뷰를 위한컨테이너
역할을 한다.- 뷰는
UIVie
w 클래스 또는UIView 클래스의 하위클래스(Subclass)
의 인스턴스이다. - 뷰는 또 다른 뷰를 관리하고 구성하기 위해 사용되기도 한다.
뷰 계층(View hierarchy)
하나의 뷰가 다른 뷰를 포함할 때, 두 뷰 사이에
부모(superview)-자식(subview)
관계가 생성된다. 부모-자식 관계 형성은 애플리케이션의시각적 모습과 동작 모두
에 영향을 미친다.
슈퍼뷰와 서브뷰의 관계에서 서브뷰가 불투명할 경우 아래 그림과 같이 슈퍼뷰가 서브뷰에 가려진다.
슈퍼뷰는 하나의 배열 안에 서브뷰를 순서대로 저장한다.
만약 슈퍼뷰에 포함된 두 서브뷰가 불투명하고 서로 겹치게 되면,아래 그림과 같이 겹쳐지는 영역에 따라 색이 다르게 표시된다.
뷰 계층의 생성과 관리
OS 애플리케이션에서 뷰 계층을 만드는 방법에는
인터페이스 빌더
를 이용하는 방법과코드
를 작성하는 방법이 있다.
코드작성 방식을 사용할 경우 서브뷰를 부모뷰에 추가하기 위해, 부모뷰의addSubView(_:)
메서드를 호출한다. 이 메서드는 해당 서브뷰를 서브뷰 목록의 마지막에 추가한다. 부모뷰의 서브뷰를 제거하기 위해서는 서브뷰의removeFromSuperView()
메서드를 호출한다.
이 외에도 서브뷰를 부모뷰 목록의 중간에 삽입하기 위해insertSubview(_:at:)
, 부모뷰 내에 이미존재하는 서브뷰를 정렬하기 위해bringSubView(toFront:)
,sendSubview(toBack:)
등의 메서드들을 호출할 수 있다.
코드로 뷰 만들기
서브뷰를 부모뷰에 추가하기 위해서는 부모뷰의 addSubview
메서드를 호출했다.
코드에서 self.view
는 메인 스토리보드에 있는 ViewController의 SuperView를 나타낸다.(self는 생략가능)
서브뷰 제거하기 removeFromSuperview
메서드 호출.
뷰의 좌표계, 프레임과 바운드
UIKit에서 기본이 되는 좌표계는 좌측 상단 모서리를 원점으로 하며, 제일 왼쪽의 제일 위의 지점이 (0, 0)다. 원점으로부터 아래쪽, 오른쪽 방향으로 확장된다. 좌표값은 해상도와 상관없이 콘텐츠의 위치를 잡는 부동소수점을 사용하여 나타낸다. 뷰의
프레임(frame)
은 뷰의 크기와 위치를 슈퍼뷰의 좌표계를 기준으로 나타낸다.바운드(bounds)
는 뷰의 크기와 위치를 해당 뷰 자신의 좌표계를 기준으로 나타낸다.
CGRect
뷰의 프레임(frame)과 바운드(bounds)는
CGRect
라는 구조체를 통해서 표현된다.CGRect
는 사각형의 크기와 위치에 대한 정보를 담고 있다.
CGRect
의origin
프로퍼티는CGPoint
타입으로 사각형의 시작점을 나타낸다.CGRect
의size
프로퍼티는CGSize
타입으로 사각형의 높이와 너비를 나타낸다.CGPoint
는 좌표를 표현할 수 있는x
와y
를 갖고 있다.CGSize
은 위치와 높이의 값인width
와height
를 갖고 있다.CGPoint
의x
,y
와CGSize
의width
,height
는 모두 부동소수점 타입인CGFloat
으로 표현된다.
<참고>
- 부스트코스 - iOS 앱 프로그래밍 https://www.boostcourse.org/mo326/lecture/16874/
- 애플 공식 문서 https://developer.apple.com/documentation/coregraphics/cgrect
'iOS' 카테고리의 다른 글
[iOS] Delegate(델리게이트) 패턴 (1) | 2021.03.10 |
---|---|
[iOS] Cocoa Touch Framework, 코코아 터치 프레임워크(UIKit, Foundation) (0) | 2021.03.08 |
[iOS] MVC 디자인 패턴 (0) | 2021.03.08 |
[iOS] Auto Layout(오토 레이아웃) 코드로 구현하기 (0) | 2021.02.08 |
[iOS] Auto Layout(오토 레이아웃) (0) | 2021.02.08 |