소프트웨어개발/iOS, macOS 와 Xcode

[iOS] Xcode 11 과 iOS 13 업데이트 급한 불 끄기 (응급 처치)

날개 2019. 11. 20. 23:27

iOS 를 개발 할 때에는 새 버전의 OS가 발표 되면 새 OS에 대응하기 위해 Xcode도 그 버전에 맞는 것으로 업데이트 해 줘야 합니다.

 

몇달 전 출시된 iOS 13 과 Xcode 11 의 경우 기존 프로젝트를 새로 빌드하면 눈에 띄는 것 두가지가 다크모드 (Dark Mode) 에서 UI 색상이 바뀌기도 하고 뷰를 모달 형식으로 띄울 때 뷰의 스타일이 페이지 시트 스타일로 나타나는 것을 볼 수 있습니다.

 

먼저 뷰를 모달로 띄울 경우 Xcode 11 에서 빌드하여 iOS 13에서 실행시키면, 아래 오른쪽 화면과 같이 페이지 시트 (Page Sheet)형태로 나오게 됩니다. 의도적으로 한 것이 아니라면 원치 않는 모습일 뿐더러 저 형태에서는 뷰를 쓸어 내리면 모달뷰가 사라져 버리므로 원하는 동작도 아닐 수 있습니다.

또 한 가지가, iOS13에 추가된 다크 모드로 동작할 때 입니다. 아래 화면과 같이 다크 모드로 들어가면 기본 색상이 어두운 계열로 변하게 되는데, 아래의 경우는 다행인 경우이고, UI가 커스터마이징 되어 있다면 엉망이 될 수 있습니다. (키보드 색상과 입력창 색상까지 모두 변함)

정상적으로는 새 OS에 맞게 하나하나 고쳐 가는 것이 바람직 하겠지만, 우선 급한 불이라도 끄고 작업을 하겠다 하시는 분들은 이 두가지만 이라도 우선 정상적으로 동작하도록 하면 수월 할 것 같습니다.

 

1. 모달 뷰 스타일을 전체 화면 스타일로 변경

 

(1) 코드의 수정

 

1) 뷰를 모달 형식으로 띄우는 모든 코드를 찾습니다.

2) present 로 뷰 컨트롤러를 표시하기 전에, 띄울 뷰 컨트롤러의 modalPresentationStyle 속성을 fullScreen 으로 모두 바꿔 줍니다.

 

<< 예 >>

 

myViewController.modalPresentationStyle = .fullScreen

 

(2) 스토리보드 (Storyboard) 에서 세그웨이 (Segue) 의 수정

 

만약 스토리보드를 사용하였고 뷰컨트롤러를 세그웨이를 통해 모달형식으로 띄운다면, 세그웨이 인스펙터에서 표시 스타일을 설정할 수 있습니다.

 

1) 모달 형식으로 띄울 뷰 컨트롤러에 연결된 세그웨이 (Segue)를 선택합니다.

 

2) 오른쪽 인스펙터 (Inspector) 창에서 Presentation 을 Full Screen으로 변경해 줍니다.

 

 

<< 예 >>

 

 

2. 다크모드 방지

 

다크 모드를 정상적으로 지원하고자 한다면 UI 디자인 부터 많은 부분을 생각해야 할 것입니다. 우선은 무조건 (단말기가 다크 모드라 할지라도) 라이트 모드로만 나오도록 설정합니다.

 

1) 왼쪽 프로젝트 창에서 해당 프로젝트 타겟의 Info.plist 파일 선택 (또는 프로젝트 파일을 선택하고 Info 탭을 선택)

2) Info.plist 목록에 "User Interface Style" 키를 추가하고 (String 타입), 값에 "light" 라고 입력.

  (내용 추가: XCode 12 버전에서는 "User Interface Style" 대신에 "Appearance" 키를 사용합니다.)

 

이렇게하면 다크모드에서도 앱이 라이트 모드로 작동을 합니다.

 

 

 

위의 두가지를 모두 적용하면 아래와 같이 정상적으로 나타나는 것을 볼 수 있습니다.

 

(정상적으로 나옴)

 

 

이제 하나 하나 iOS 13 에 맞게 수정해 가면서 작업하면 됩니다.

 

 

 

 

 

 

(C) 2019 WingsNote.com (무단 복제 및 게시 금지, 링크 허용)