안녕하세요.
이번 글에서는 iOS에서 상태바 컬러를 변경하기 위해 StatusBar를 가져오는 코드가 iOS13에서는 가져올 수 없는 이슈가 있어 현재까지 찾은 방법을 공유하려고 합니다.
저는 현재 이 코드를 이용해서 StatusBar를 가져오고 있었는데
UIApplication.shared.value(forKey: "statusBar") as? UIView
Xcode11 GM Seed 2, iOS 13 환경에서 빌드하면 아래 로그가 찍히며 Crash가 발생합니다.
Terminating app due to uncaught exception 'NSInternalInconsistencyException',
reason: 'App called -statusBar or -statusBarWindow on UIApplication: this code must be changed as there's no longer a status bar or status bar window.
Use the statusBarManager object on the window scene instead.'
로그를 잘 읽어보면,
'해당 코드에서 statusBar를 가져올 수 없으니 window scene object의 statusBarManager 객체를 사용하라' 라고 적혀있습니다.
developer apple document로 가보면 (https://developer.apple.com/documentation/uikit/uistatusbarmanager)
StatusBar를 가져올 수 있는 프로퍼티가 없습니다 ㅠㅠ
스택오버플로우에서 검색해본 결과 효과적인 방법을 찾진 못했습니다.
그나마 찾은 방법은.. (https://stackoverflow.com/a/57394751)
Debug View Hierarchy에서 StatusBar의 tag값을 확인하고
keyWindow에서 Tag값을 주입하여 StatusBar를 가져오는 방식입니다.
private var statusBarView: UIView?
if #available(iOS 13.0, *) {
let tag = 38482458385
if let statusBar = UIApplication.shared.keyWindow?.viewWithTag(tag) {
statusBarView = statusBar
} else {
let statusBar = UIView(frame: UIApplication.shared.statusBarFrame)
statusBar.tag = tag
UIApplication.shared.keyWindow?.addSubview(statusBar)
statusBarView = statusBar
}
} else {
statusBarView = UIApplication.shared.value(forKey: "statusBar") as? UIView
}
안녕하세요. 이번 글에서는 iOS13 환경에서 deviceToken을 가져올 때 달라진 점에 대해서 공유하려고 합니다. 달라진 점 iOS12 환경에서는 deviceToken을 가져오는 메소드에서 deviceToken 파라미터 데이터 형식은 map메소드를 이용하여 Data의 각 바이트를 16진수로 String으로 만들고, joined()을 ...
안녕하세요. 이번 글에서는 iOS에서 상태바 컬러를 변경하기 위해 StatusBar를 가져오는 코드가 iOS13에서는 가져올 수 없는 이슈가 있어 현재까지 찾은 방법을 공유하려고 합니다. 이슈 저는 현재 이 코드를 이용해서 StatusBar를 가져오고 있었는데 정말 효율적이지 않은 방법입니다. 혹시 해당 이슈를 좀...
SwiftLint Swift Style Guide에 기반한 Swift 언어 스타일 및 컨벤션 검사 툴. (Github : https://github.com/realm/SwiftLint) 사용 목적 1. 협업을 진행하다보면 각자 다른 코딩스타일로 개발하고 있습니다. 룰을 맞추고 효율적인 코드리뷰, PR을 진행하기 위함. 2. 코딩 스타일에 들어...
안녕하세요. 델리게이트 패턴과 유닛 테스트 Example Code를 작성해보았습니다. https://github.com/gwangyonglee/DelegatePatternExample UITableViewCell에서 delegate 프로퍼티 변수를 weak를 설정한 이유 protocol을 class로 구현하지 않고 UITableViewCell...
[Xcode] 이미지 Bitmap, Vector 방식 적재적소에 사용하기 Single Scale 벡터 방식 벡터 방식의 이미지를 사용할 땐 주로 많지 않은 색으로 구성되어 있는 단색이미지. ex) 아이콘, 로고, 도형 Individual Scales 비트맵 방식 비트맵 방식의 이미지를 사용할 땐 주로 사진, 다양한 색상 그라디언트가 필요...