일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- swift autolayout
- 스위프트
- silent push
- 앱 꺼졌을 때 푸시 데이터 저장
- FlutterView MethodChannel
- 스위프트 웹뷰
- 노티피케이션 익스텐션
- swift 문자
- 푸시 데이터 저장
- flutter 회전
- 스위프트 카메라
- 스위프트 UserDefaults
- 안드로이드 숏컷
- NotificationService Extension
- 플러터 뷰 컨트롤러
- swift sms
- Flutter NativeView
- 스위프트 푸시
- Swift flutterviewcontroller
- native flutter view
- 안드로이드 바로가기
- 안드로이드 에러
- Swift flutterview
- 스위프트 앨범
- 안드로이드 FCM
- Flutter UIKitView MethodChannel
- flutter rotate
- 앱 백그라운드 푸시 데이터 저장
- 스위프트 테이블 뷰 셀
- 안드로이드 앨범
- Today
- Total
Things take time
[SWIFT] iOS 13대응 - UI(Modal 뷰, Present, 다크모드, StatusBar Color) 본문
안드로이드 오류만 주구장창 잡고있다가 오랜만에 업데이트가 있네?
이것은 또 무엇인가.
올해도 역시나 미리 대응하지 못하고, 뒤늦게서야 부랴부랴 자료를 찾아본다.
Swift UI는 차차 해나가면 될 것 같지만, 불부터 꺼야지
1. 뷰 컨트롤러의 Madality 변경!
안드로이드에서 액티비티를 전환할 때, History를 사용하게 되면 첫 번째 사진처럼 되는데, 그 모습을 보는듯 했다.
기존에 사용하던 present(ViewController, ..)를 사용할때 마다 저렇게 대응된다고 한다. 새로운 옵션이 생겼으니 적용하자.
https://sarunw.com/posts/modality-changes-in-ios13
if let vc = storayBoard.instantiateViewController(withIdentifier: "AuthCountryViewController") as? AuthCountryViewController{
vc.modalPresentationStyle = .fullScreen
self.present(vc, animated: false, completion: nil)
}
modalPresentationStyle의 기본 Default가 Page Sheet라는 것인데, 이 것이 흔히 말하는 먼저 열었던 뷰를 보여주는 것이다. 이를 덮을 수 있도록 fullScreen으로 변경한다.
하나의 뷰 컨트롤러 클래스 안에서, 여러개의 present를 공통 방식으로 사용한다면 present를 오버라이드 하여 사용하는 것도 좋다.
override func present(_ viewControllerToPresent: UIViewController, animated flag: Bool, completion: (() -> Void)? = nil) {
viewControllerToPresent.modalPresentationStyle = .fullScreen
super.present(viewControllerToPresent, animated: flag, completion: completion)
}
단, 배경이 투명해야할 경우 .fullScreen대신 .overFullScreen
UIModalPresentationOverFullScreen
으로 세팅한다!
2. 다크모드
iOS가 13이되면서, 다크모드를 지원하게 되었는데 그에 따라 기존 컬러값들에 비상이 생겼다. 다크모드를 설정할 경우, 백그라운드의 컬러값이 적용되지 않은 뷰들이 다크모드의 Default값을 따르게 된다.
그래서 두 번째 스크린샷에서 보는 것처럼 UITextField, UITextView같은 애들이 백그라운드 컬러값이 없기 때문에 저런 현상이 나타난다.
간단히 말해서 해결법은 백그라운드에 컬러값을 주면 된다.
이렇게 하면 색이 나오게 됨
각각의 모든 백그라운드 컬러값을 기획 디자이너와 협의후에 맞추면 될 일이지만 뷰가 많을 수록, 사용되는 컴퍼넌트가 많을수록 공수는 많다.
아니면 다크모드는 지원하지 않도록 하는 방법은 다음과 같다.
AppDelegate의 didFinishLaunchingWithOptions함수에
if #available(iOS 13.0, *){
self.window?.overrideUserInterfaceStyle = .light
}
혹은 Info.plist에
위와 같이 세팅하면 된다.
3. StatusBar
기본 StatusBar.Default가 흰색이 되었다. 기본 라이트모드에서 봤을 때 흰색이고, 다크모드로 가면 기존에있던 것으로 보이므로, 스테이터스바 부분은 다크모드를 따른다.
방법은 다음과 같다.
프로젝트뷰? 타겟 눌렀을 때 나오는 그 화면!! General있고 Info있고 Build Settings있는.. 그 뷰!!
거기서 General에서 위와 같이 세팅한다.
이 말고도 많이 있는데, 각기 잘 찾아서 처리하시길
[참고 블로그,티스토리]
https://sesang06.tistory.com/138
'iOS (기능)' 카테고리의 다른 글
[iOS] Android의 R.array와 같은 배열 문자열 처리 (0) | 2019.12.17 |
---|---|
[Swift] Error : terminating with uncaught exception of type NSException[Xcode 11.2/iOS 13.2 미만 버전 앱 죽는 현상] (0) | 2019.11.07 |
[SWIFT] iOS13 - Swift UI란 무엇인가(UIKit은 ??) (2) | 2019.09.24 |
[SWIFT] 뷰 컨트롤러 종료시 좌우로 화면 종료하기(dissmiss) (0) | 2019.09.05 |
[SWIFT] 현재 날짜, 형식, 시간, 분 구하기 / 날짜 차이 구하기 (0) | 2019.06.12 |