iOS Trouble Shooting 3

[iOS] iOS13 앱 푸시 장치 토큰(deviceToken) 관련 이슈

안녕하세요. 이번 글에서는 iOS13 환경에서 deviceToken을 가져올 때 달라진 점에 대해서 공유하려고 합니다. 달라진 점 iOS12 환경에서는 deviceToken을 가져오는 메소드에서 deviceToken 파라미터 데이터 형식은 iOS13 환경에서는 {length=32,bytes=0x91e27cd9ddf20c69da8fa650e2a06f55...e60b100d99d60adf} 로 변경되었습니다. 대응 iOS12 환경에서 deviceToken 데이터를 String으로 아래의 방법으로 가공하였다면, func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Dat..

[iOS] iOS13 StatusBar Crash 이슈

안녕하세요. 이번 글에서는 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 ..

[iOS] UITableView에서 리로드할 때 스크롤 포지션 어긋나는 이슈

해당 이슈는 UITableView의 셀 높이들이 동적일 때 리로드할 때 스크롤 위치가 이상한 곳으로 설정되어집니다. 유연하고 부드러운 테이블뷰를 만들기 위해서는 heightForRowAt, estimatedHeightForRowAt 모두 적절히 지정되어야합니다. estimatedHeightForRowAt를 잘 지정해줘야 리로드할 때 예상한 셀 높이에 따라 스크롤 포지션이 정해집니다. 해결 방법 셀 높이를 저장할 프로퍼티를 추가하여 willDisplay에서 셀 높이를 저장하고, estimatedHeightForRowAt에서 저장한 셀 높이를 반환하여 해결. // MARK: - Property private var cellHeights: [IndexPath: CGFloat] = [:] // MARK: - w..