You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
loadView : 뷰를 실제로 생성하여 메모리에 로드하는 역할을 합니다. 스토리보드를 사용하지 않는다면 이 메소드를 override 해서 뷰를 직접 만들고 뷰계층을 구성해야합니다.
viewDidLoad : 뷰가 메모리에 로드된 후 자동으로 호출되는 메소드로 일반적으로 리소스를 초기화하는 코드를 넣습니다.
viewWillAppear : 뷰가 나타나기 전에 호출되는 메소드로 viewDidLoad 와 다르게 뷰가 처음 로드될 때 뿐만아니라 이미 로드된 뷰가 다른 뷰의 작업이 끝난 후 다시 해당뷰로 이동을 하게 되면 호출되는 메소드입니다. 이 메소드를 override 할때는 super.viewWillAppear를 호출하여 정의해야합니다.
viewDidAppear : 뷰가 화면에 나타난 직후 실행되는 메소드로 나타는 뷰에 대한 추가적인 작업(ex. 애니메이션 처리)을 설정해줄 수 있습니다. 이 메소드를 override 할때는 super.viewDidAppear를 호출하여 정의해야합니다.
viewWillDisappear : 뷰가 사라지기 직전이라는 것을 뷰 컨트롤러에게 알리는 역할을 합니다. 이 메소드를 override 할때는 super.viewWillDisappear를 호출하여 정의해야합니다.
viewDidDisappear : 뷰가 제거 되었음을 뷰 컨트롤러에게 알리는 역할을 하고 제거되는 뷰에 대한 추가작업(ex.애니메이션)을 설정 할 수 있습니다.이 메소드를 override 할때는 super.viewDidDisappear를 호출하여 정의해야합니다.
Q. ViewController의 생명주기를 설명하시오
뷰가 로드부터 init, 애니메이팅 그리고 deinit까지 가지게 되는 일련의 절차와 관련된 메서드를 통한 관리.
viewDidLoad는 뷰가 메모리에 로드된 직후에 호출되는 메서드로 초기 화면을 세팅해 줄 때 사용.
viewWillAppear는 view가 추가되기 직전에, viewDidAppear는 추가된 직후에 호출.
viewWillDisappear는 view가 사라지기 직전에, viewDidDisappear는 사라진 직후에 호출.
UIView
View 객체는 화면의 직사각형 영역에 대한 콘텐츠를 관리하는 객체로 콘텐츠를 렌더링하고 해당 콘텐츠와의 상호 작용을 처리한다.
View 객체는 애플리케이션이 사용자와 상호 작용하는 주요 방법이기 때문에 드로잉 및 애니메이션, 레이아웃 및 서브 뷰 관리,이벤트 처리의 책임을 지고 있다.
드로잉 및 애니메이션
UIKit 또는 Core Graphics를 사용하여 직사각형 영역에 콘텐츠를 그리고 새 값으로 애니메이션 하는 것
여러 보기 속성(frame, bounds, center, transform, alpha, background Color)에 대한 변경 사항을 애니메이션 처리 가능하다.
View가 처음 표시되거나 layout의 변경이 있을 때 시스템에서 draw(:) 메소드를 호출한다.
뷰의 실제 내용이 변경된 경우 setNeedsDisplay() or setNeedsDisplay(:)를 호출하여 반영될 수 있도록 View를 다시 그려야한다.
레이아웃 및 서브 뷰 관리
뷰 객체에는 0개 이상의 서브 뷰가 포함될 수 있고 뷰의 크기와 위치를 조정할 수 있다
오토레이아웃을 사용하여 뷰 계층구조의 변경에 대한 응답으로 뷰의 크기와 위치를 조정하는 규칙을 정의
마지막으로 이벤트 처리
View 객체는 UIResponder의 하위 클래스이며 터치와 같은 이벤트에 응답가능
일반적인 제스처 처리를 위한 gesture recognizers를 설정할 수 있다는 것을 의미
View 객체 생성을 제외한 사용자 인터페이스에 대한 모든 조작은 메인스레드에서 이뤄져야 한다.
Frame과 Bound
frame은 부모 뷰의 좌표계에서 View의 위치와 크기를 나타낸다.
frame에서 size는 뷰를 감싸는 크기를 나타내서 뷰가 회전되는 경우에 size가 변하게 된다.
frame의 origin은 superView의 origin을 기준으로 처리되기 때문에 view 자체가 이동한다.
bounds는 자신의 뷰 좌표계에서 View의 위치와 크기를 나타낸다.
bounds는 뷰 자체의 크기를 나타내기 때문에 회전을 해도 size의 변화가 없다.
하지만 bounds의 origin은 바라보는 시점을 변화시키는 것이기 때문에 자신의 위치는 고정되고 하위 view들에 영향을 주게된다.
scrollview가 bounds의 origin을 바꿔주는 대표적인 예이다.
Q. View 객체에 대해 설명하시오.
View는 Screen의 특정 사각형 영역에서 content를 관리하는 객체입니다. Drawing, animation, layout, subview management, event handling에 대한 책임이 있다.
Q. Bounds 와 Frame 의 차이점을 설명하시오.
origin을 부모 뷰를 기준으로 하는지, 자신의 뷰를 기준으로 하는지의 차이
회전 하였을 때의 사이즈 변화와 origin 변화에 따른 하위 뷰의 변화 차이
CALayer
UIVIew 는 기본적으로 layer 속성으로 불리는 root layer 를 가지고 있다. 즉, iOS 에서 모든 뷰는 layer-backed View 이며 layer의 지원을 받게되는 것으로 구성된다. 레이어의 주요한 역할은 시각 콘텐츠를 관리하는 것이지만, 접근 가능한 시각적 속성, 콘텐츠의 기하학적 수치 정보를 유지하는 역할을 수행한다.
Core Animation
iOS 어플을 사용할 때 화면이 끊기지 않고 "부드럽게" 그려지도록 하기 위해선 초당 60 프레임 속도를 유지해야 한다. 이러한 유지 기반을 구성하기 위해서 초창기에는 GPU에서 직접 실행되는 그래픽에 특화된 OpenGL기반으로 작업을 수행하였다. 하지만 단순한 작업에도 코드 양이 매우 방대해지면서, 이를 보완하기 위한 Core Graphics의 등장으로 로우 레벨에서의 안정성을 구축했다. 시간이 지나면서 개발자 입장에서 더욱 간단하게 접근하여 제어하도록 Core Animation이 등장하면서 위임을 통한 iOS Graphics의 제어 환경이 만들어지게 된다.
UIView에서 CALayer
UIView는 하나의 CALayer(Root)만 가지고 있다. CALayer(Root)는 SubLayer를 여러 개 둘 수 있다. 뷰에 붙어있는 레이어들의 계층구조는 해당 뷰들의 계층구조와 동일하다.
하나의 레이어는 레이아웃 매니저 오브젝트를 가지고 있다. 이 매니저를 통해 서브 뷰의 레이아웃들을 독립적으로 관리할 수 있다.
UIView는 레이아웃, 터치 이벤트 등을 처리하지만, View 위에 컨텐츠나 애니메이션을 그리는 작업은 직접 하지 않고, Core Animation에게 위임하는데 이를 CAlayer를 통해서 작업을 하게 된다.
스스로 그리는 역할을 하는 클래스가 아니다. 대신 콘텐츠에 대한 속성을 가지고 있다.(view.layer 프로퍼티)
접근가능한 속성을 변경할 때, 그래픽 하드웨어에 관련 정보를 전달하면서 애니메이션이 시작된다.
레이어는 트리 계층 형태를 구성한다. 3가지 종류의 트리 집합이 존재한다. (Model, Presentation, Render)
UIView 가 생성될 때, 레이어 오브젝트도 하나 생성되어 UIView 의 main root layer 가 된다.
레이어는 콘텐츠를 비트맵 형태로 캐싱한다.
Q. UIView 에서 Layer 객체는 무엇이고 어떤 역할을 담당하는지 설명하시오.
View에 붙어있는 조력자 형태로 컨텐츠나 애니메이션 작업을 담당하며, 직접 그리는 것이 아닌 상태 변경을 통한 Core Animation에 위임하는 방식으로 해당 역할을 수행한다. UIView에 관련된 작업은 CPU를 사용하여 메인스레드에서 작동하고, CALayer는 GPU에서 직접 그리며 별도 스레드에서 작동한다.
The text was updated successfully, but these errors were encountered:
UIViewController
UIViewController는 모든 ViewController 객체들의 상위 클래스.
Q. 모든 View Controller 객체의 상위 클래스는 무엇이고 그 역할은 무엇인가?
UIViewController, 데이터 변경에 따른 View를 업데이트 / 사용자 상호작용에 대한 응답(이벤트 처리) / View의 크기와 레이아웃을 관리 / 앱 내의 다른 개체들(다른 뷰컨트롤러 포함)을 조정
ViewController의 생명주기
Q. ViewController의 생명주기를 설명하시오
뷰가 로드부터 init, 애니메이팅 그리고 deinit까지 가지게 되는 일련의 절차와 관련된 메서드를 통한 관리.
viewDidLoad는 뷰가 메모리에 로드된 직후에 호출되는 메서드로 초기 화면을 세팅해 줄 때 사용.
viewWillAppear는 view가 추가되기 직전에, viewDidAppear는 추가된 직후에 호출.
viewWillDisappear는 view가 사라지기 직전에, viewDidDisappear는 사라진 직후에 호출.
UIView
View 객체는 화면의 직사각형 영역에 대한 콘텐츠를 관리하는 객체로 콘텐츠를 렌더링하고 해당 콘텐츠와의 상호 작용을 처리한다.
View 객체는 애플리케이션이 사용자와 상호 작용하는 주요 방법이기 때문에
드로잉 및 애니메이션
,레이아웃 및 서브 뷰 관리
,이벤트 처리
의 책임을 지고 있다.드로잉 및 애니메이션
UIKit 또는 Core Graphics를 사용하여 직사각형 영역에 콘텐츠를 그리고 새 값으로 애니메이션 하는 것
여러 보기 속성(frame, bounds, center, transform, alpha, background Color)에 대한 변경 사항을 애니메이션 처리 가능하다.
View가 처음 표시되거나 layout의 변경이 있을 때 시스템에서 draw(:) 메소드를 호출한다.
뷰의 실제 내용이 변경된 경우 setNeedsDisplay() or setNeedsDisplay(:)를 호출하여 반영될 수 있도록 View를 다시 그려야한다.
레이아웃 및 서브 뷰 관리
뷰 객체에는 0개 이상의 서브 뷰가 포함될 수 있고 뷰의 크기와 위치를 조정할 수 있다
오토레이아웃을 사용하여 뷰 계층구조의 변경에 대한 응답으로 뷰의 크기와 위치를 조정하는 규칙을 정의
마지막으로 이벤트 처리
View 객체는 UIResponder의 하위 클래스이며 터치와 같은 이벤트에 응답가능
일반적인 제스처 처리를 위한 gesture recognizers를 설정할 수 있다는 것을 의미
Frame과 Bound
frame은 부모 뷰의 좌표계에서 View의 위치와 크기를 나타낸다.
frame에서 size는 뷰를 감싸는 크기를 나타내서 뷰가 회전되는 경우에 size가 변하게 된다.
frame의 origin은 superView의 origin을 기준으로 처리되기 때문에 view 자체가 이동한다.
bounds는 자신의 뷰 좌표계에서 View의 위치와 크기를 나타낸다.
bounds는 뷰 자체의 크기를 나타내기 때문에 회전을 해도 size의 변화가 없다.
하지만 bounds의 origin은 바라보는 시점을 변화시키는 것이기 때문에 자신의 위치는 고정되고 하위 view들에 영향을 주게된다.
scrollview가 bounds의 origin을 바꿔주는 대표적인 예이다.
Q. View 객체에 대해 설명하시오.
View는 Screen의 특정 사각형 영역에서 content를 관리하는 객체입니다. Drawing, animation, layout, subview management, event handling에 대한 책임이 있다.
Q. Bounds 와 Frame 의 차이점을 설명하시오.
origin을 부모 뷰를 기준으로 하는지, 자신의 뷰를 기준으로 하는지의 차이
회전 하였을 때의 사이즈 변화와 origin 변화에 따른 하위 뷰의 변화 차이
CALayer
UIVIew 는 기본적으로 layer 속성으로 불리는 root layer 를 가지고 있다. 즉, iOS 에서 모든 뷰는 layer-backed View 이며 layer의 지원을 받게되는 것으로 구성된다. 레이어의 주요한 역할은 시각 콘텐츠를 관리하는 것이지만, 접근 가능한 시각적 속성, 콘텐츠의 기하학적 수치 정보를 유지하는 역할을 수행한다.
Core Animation
iOS 어플을 사용할 때 화면이 끊기지 않고 "부드럽게" 그려지도록 하기 위해선 초당 60 프레임 속도를 유지해야 한다. 이러한 유지 기반을 구성하기 위해서 초창기에는 GPU에서 직접 실행되는 그래픽에 특화된 OpenGL기반으로 작업을 수행하였다. 하지만 단순한 작업에도 코드 양이 매우 방대해지면서, 이를 보완하기 위한 Core Graphics의 등장으로 로우 레벨에서의 안정성을 구축했다. 시간이 지나면서 개발자 입장에서 더욱 간단하게 접근하여 제어하도록 Core Animation이 등장하면서
위임
을 통한 iOS Graphics의 제어 환경이 만들어지게 된다.UIView에서 CALayer
UIView는 하나의 CALayer(Root)만 가지고 있다. CALayer(Root)는 SubLayer를 여러 개 둘 수 있다. 뷰에 붙어있는 레이어들의 계층구조는 해당 뷰들의 계층구조와 동일하다.
하나의 레이어는 레이아웃 매니저 오브젝트를 가지고 있다. 이 매니저를 통해 서브 뷰의 레이아웃들을 독립적으로 관리할 수 있다.
UIView는 레이아웃, 터치 이벤트 등을 처리하지만, View 위에 컨텐츠나 애니메이션을 그리는 작업은 직접 하지 않고, Core Animation에게 위임하는데 이를 CAlayer를 통해서 작업을 하게 된다.
Q. UIView 에서 Layer 객체는 무엇이고 어떤 역할을 담당하는지 설명하시오.
View에 붙어있는 조력자 형태로 컨텐츠나 애니메이션 작업을 담당하며, 직접 그리는 것이 아닌 상태 변경을 통한 Core Animation에 위임하는 방식으로 해당 역할을 수행한다. UIView에 관련된 작업은 CPU를 사용하여 메인스레드에서 작동하고, CALayer는 GPU에서 직접 그리며 별도 스레드에서 작동한다.
The text was updated successfully, but these errors were encountered: