iOS의 ‘색상 어둡게’ 모드
Fact
iOS 설정 중 ‘손쉬운 사용’ > ‘대비 증가’ > ‘색상 어둡게’를 켜면 UIApplicationDelegate.window의 tintColor가 #000000, 알파 0이 된다.
Side Effect
UIAlertController를 쉽게 사용하기 위해서 유틸리티 클래스 메소드로 만든 곳이 있다.
11번 째 줄에서 window의 tintColor를 alertWindow에 설정하고 있다. 그런데 이 설정은 원치 않았던 문제를 만든다.
Solutions
해결 방법 중 하나는 tintColor 설정하는 부분을 제거하는 것이다. 단점은 tintColor를 사용하고 싶을 경우에 못 쓴다는 것이다.
다른 방법은 클래스 메소드로 만들어서 사용하는 방법을 포기하는 것이다. 경고창을 띄우고 싶을 경우 ViewController마다 적절히 개발한다. 개인적으로 이 방법이 적절하다고 생각한다. 왜냐하면 경고창을 띄우는 행위 말고는 각각의 경고창들은 메시지, 버튼 개수도 다르고 텍스트필드처럼 다른 UI 요소가 들어갈 수도 있다. 또 경고창이 닫히면서 하는 일도 다를 것이다.
P.S.
‘색상 어둡게’라는 설정이 이런 문제를 일으킬 것을 예측하는 것은 불가능하다.
지금 내가 소스 코드를 작성하면서 할 수 있는 일은 이 소스 코드가 정확히 어떤 일을 하는 지 아는 것이다.