iOS의 애플리케이션 화면에서 보이는 컨텐츠는 모두 윈도우와 뷰를 사용해서 나타낸다고 한다. 그렇기 때문에 원하는 모양으로 화면을 구성하고 화면에서 일어나는 제스처를 관리하기 위해 뷰에 대해 이해하는 것은 매우 중요하다!
- 윈도우는 그 자체로 컨텐츠를 표현할 수는 없고, 뷰들의 컨테이너 역할
- 뷰는 UIView class 또는 그 subclass의 인스턴스로 윈도우의 일정 부분에서 컨텐츠를 보여준다.
인터페이스 빌더 또는 코드를 통해서 뷰를 생성, superview에 포함시키거나 삭제시킬 수 있다.
두 가지 방법을 다 알면 좋지만, 개인적으로 협업을 위해서라면 코드를 통한 작업이 더 도움이 될 것이라고 생각한다.
슈퍼뷰는 배열로 서브뷰들을 관리한다.
superview는 하나의 배열로 서브뷰들을 관리하며, 배열의 마지막 인덱스에 위치하는 서브뷰가 가장 위에 나타난다.
공부해볼 링크 저장!
뷰의 좌표계
iOS에서 좌표계는 기본적으로 Top-Left를 (0,0)으로 동작한다.
뷰에는 frame과 bound라는 두 개의 좌표계가 존재한다.
frame : superView 기준의 좌표계
bound : subView 기준의 좌표계
뷰를 생성하려면
여러가지 UIView의 서브클래스로 구현되어있는 라이브러리(예를 들어서 UIButton, UILabel 등)들을 제외하고, 직접 View를 만들 경우 어디서(슈퍼뷰의), 어떤 크기로 만들지 알아야 한다.
UIView(frame: CGRect)를 통해서 만들 수 있으며
CGRect는 다음과 같이 생성된다. CGRect(origin: CGPoint, size : CGSize)
또 CGPoint, CGSize는
CGPoint(x: CGFloat, y: CGFloat)
CGSize(width: CGFloat, height: CGFloat)
let viewRect = CGRect(x: 100, y: 100, width: 200, height: 200)
let subView = UIView(frame: viewRect)
subView.backgroundColor = UIColor.red
self.view.addSubView(subView) // superView내부에서
// 이후에 여러 constraint들 선언
// ...
알아둘 것
- frame, bound의 차이를 알아두었다가 적절한 곳에 사용하자.
- UIView로 View 만드는 방법 알아두자.
'공부 > [TIL]' 카테고리의 다른 글
[TIL] 220122 - Auto Layout 기본적인 내용 (0) | 2022.01.24 |
---|---|
[TIL] 220120 - Swift ARC (0) | 2022.01.21 |
[TIL] 220113 - Swift Generic (0) | 2022.01.13 |
[TIL] 220112 - 요소(UIButton, UILabel)들의 특징을 알고 쓰자(공식문서를 읽자) (0) | 2022.01.12 |
[TIL] 220111 - 아이폰에 앱 무선으로 빌드 및 디버그하기! (0) | 2022.01.11 |
댓글