2017-02-16 1 views
0

현재 기사 기반 응용 프로그램에서 작업 중입니다. 주간/야간 독서 모드 기능이 있습니다. 응용 프로그램 배경색은 야간 모드에서 검은 색이어야하며 전경 구성 요소는 흰색이어야합니다. UIView, UILabel, UIButton 및 UITextView에 대한 카테고리를 만들었지 만 적절한 접근 방식인지 여부는 알 수 없습니다. 제게 뭔가 제안 해주세요.iOS 응용 프로그램의 주 야간 모드

iOS 애플리케이션에서 Day/Night 모드를 구현하는 방법은 무엇입니까?

+0

다음 링크를 사용할 수 있습니다. https://www.raywenderlich.com/108766/uiappearance-tutorial – Sunny

답변

0

최상의 대안은 카테고리가 아닌 모양 프록시를 사용하는 것입니다. 서브 클래스가 UIView (기본적으로 모든 UI)이라면이 내용이 표시됩니다.

단순히 원하는 모양으로 설정하면 모든 요소가 기본적으로이 속성을 상속합니다. 다음 예제를 보겠습니다.

[[UIButton appearance] setBackgroundColor:[UIColor blackColor]]; 
[[UIButton appearance] setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 

모든 UIButton에는 기본적으로 이러한 특성이 있습니다.

하루 중 앱이 실행될 때 수표를 구현 한 다음이를 기반으로 UI의 모양을 설정할 수 있습니다.

0

예를 들면 다음과 같습니다. UILabel.appearance().textColor = UIColor.white. 어두운 모드가 활성화되어있을 때 UserDefaults 키를 설정하는 것을 잊지 마세요. 그러면 앱이 다시 시작될 때 이전 모양이 유지됩니다. 또한, 당신은 AppDelegate에에 (네비게이션 컨트롤러와 탭 막대의 상태 표시 줄 요소와 제목에 대한 탐색 컨트롤러, 탭 표시 줄 및 키보드와 흰색에 검은 색 설정할 수 있습니다 didFinishLaunchingWithOptions :

UINavigationBar.appearance().barTintColor = UIColor.black 
UIApplication.shared.statusBarStyle = .lightContent 
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName:UIColor.white] 
UITabBar.appearance().barTintColor = UIColor.black 
0

나는 비슷한 동작을 구현 다른 색 구성표로 구성 할 수있는 모양 관리자를 만들면 다음과 같은 기능을 갖게됩니다. -(UIColor*) colorForLabelInHomeScreen; 그 후에는 현재 색 구성표를 유지하기 위해 사용자 기본값이 필요하며 사용자 이후에 화면을 다시로드하는 방법이 필요합니다. (1 대 다수의 관계가 좋은 선택이기 (위해) 때문에, 통지를 발행한다)

이 접근 방식의 좋은 점 중 하나는 새로운 색상 구성표로 매우 쉽게 확장 할 수 있다는 것입니다.

관련 문제