본문 바로가기
공부/[TIL]

[TIL] 220125 - iOS의 View 체계

by 인생은아름다워 2022. 1. 27.

iOS의 애플리케이션 화면에서 보이는 컨텐츠는 모두 윈도우와 뷰를 사용해서 나타낸다고 한다. 그렇기 때문에 원하는 모양으로 화면을 구성하고 화면에서 일어나는 제스처를 관리하기 위해 뷰에 대해 이해하는 것은 매우 중요하다!

  • 윈도우는 그 자체로 컨텐츠를 표현할 수는 없고, 뷰들의 컨테이너 역할
  • 뷰는 UIView class 또는 그 subclass의 인스턴스로 윈도우의 일정 부분에서 컨텐츠를 보여준다.

인터페이스 빌더 또는 코드를 통해서 뷰를 생성, superview에 포함시키거나 삭제시킬 수 있다.

두 가지 방법을 다 알면 좋지만, 개인적으로 협업을 위해서라면 코드를 통한 작업이 더 도움이 될 것이라고 생각한다.

슈퍼뷰는 배열로 서브뷰들을 관리한다.

superview는 하나의 배열로 서브뷰들을 관리하며, 배열의 마지막 인덱스에 위치하는 서브뷰가 가장 위에 나타난다.

공부해볼 링크 저장!

 

Views

Views Because view objects are the main way your application interacts with the user, they have many responsibilities. Here are just a few: Layout and subview managementA view defines its own default resizing behaviors in relation to its parent view.A view

developer.apple.com

뷰의 좌표계

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 만드는 방법 알아두자.

댓글