UIAppearance

Panther·2021년 8월 13일
0
post-custom-banner

https://developer.apple.com/documentation/uikit/uiappearance

"A collection of methods that gives you access to the appearance proxy for a class."

클래스에 대한 모양 프록시에 접근권한을 주는 메소드의 컬렉션입니다.

Declaration

@MainActor protocol UIAppearance

Overview

클래스의 모양 프록시에 모양 수정 메시지를 보내는 방법으로 클래스 인스턴스의 모양을 커스터마이징 할 수 있습니다.

Note
iOS는 뷰가 윈도우에 진입할 때 모양 변경에 적응하지만, 윈도우에 이미 있는 뷰의 모양은 변경시키지 않습니다. 현재 윈도우에 있는 뷰의 모양을 변경하려면, 뷰 계층구조로부터 뷰를 제거하고 다시 돌려 넣으시기 바랍니다.

객체에 대한 모양을 커스터마이징 하는 방법은 두 가지가 있습니다. 모든 인스턴스의 경우와 컨테이너 클래스의 인스턴스 내부에 포함된 인스턴스의 경우입니다.

  • 클래스의 모든 인스탄스 모양을 커스터마이징 하려면, 해당 클래스에 대한 모양 프록시를 가져오기 위해 appearance()를 사용해야 합니다. 예를 들어 UINavigationBar의 모든 인스턴스에 대해 바 백그라운드 틴트 색상을 수정하려면 아래처럼 합니다.
[[UINavigationBar appearance] setBarTintColor:myNavBarBackgroundColor];
  • 컨테이너 클래스의 인스턴스 내부에 포함된 혹은 계층구조에서 인스턴스 내부에 포함된 클래스의 인스턴스 모양을 커스터마이징 하려면, 해당 클래스의 모양 프록시를 가져오기 위해 appearanceWhenContainedIn:을 사용하시기 바랍니다. 예를 들어 네비게이션 바를 포함하는 객체에 기반해 바 버튼의 모양을 수정하려면 아래와 같이 합니다.
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil]
       setBackgroundImage:myNavBarButtonBackgroundImage forState:state barMetrics:metrics];
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], [UIPopoverController class], nil]
        setBackgroundImage:myPopoverNavBarButtonBackgroundImage forState:state barMetrics:metrics];
[[UIBarButtonItem appearanceWhenContainedIn:[UIToolbar class], nil]
        setBackgroundImage:myToolbarButtonBackgroundImage forState:state barMetrics:metrics];
[[UIBarButtonItem appearanceWhenContainedIn:[UIToolbar class], [UIPopoverController class], nil]
        setBackgroundImage:myPopoverToolbarButtonBackgroundImage forState:state barMetrics:metrics];

모든 주어진 뷰 계층구조에서 가장 밖에 있는 모양 프록시가 우선적입니다. 구체성(체인의 깊이)은 동등합니다. 달리 표현하자면 appearanceWhenContainedIn:에 있는 격리 문구는 부분적인 순서처럼 다뤄집니다. 주어진 구체화된 순서(실제 하위뷰 계층구조)에서 UIKit은 윈도우 아래로부터 실제 계층구조를 읽어나갈 때, 첫 번째 고유한 일치인 부분적 순서를 선택합니다.

특성 컬렉션을 구체화하는 것을 통해 커스터마이징 된 모양을 어떤 클래스의 인스턴스가 가질지를 정제할 수 있습니다. 특정 특성 컬렉션을 갖는 클래스에 대한 프록시를 가져오기 위해 appearance(for:)appearanceForTraitCollection:whenContainedIn:을 사용하시기 바랍니다.

모양 커스터마이징을 지원하려면 클래스는 UIAppearanceContainer 프로토콜을 따라야 하고 관련 접근자 메소드가 UI_APPEARANCE_SELECTOR로 표시되어야 합니다.

post-custom-banner

0개의 댓글