Xcode12 & iOS 14에서 UIDate Picker 붕괴에 대한 이야기

4712 단어 Xcode12iOS14

개시하다


iOS 14가 발매된 지 4개월이 지났네요.
시간이 지나고 드디어 XCode 12가 대응했습니다.
하지만 XCode12 Edition이 출시되면
코드가 변경된 기억나지 않는 날짜 입력 형식에서 충돌 보고서를 받았습니다.

충돌 코드


Sample.swift
@IBOutlet private weak var datePicker: UIDatePicker!
~~~中略~~~
self.datePicker.setValue(false, forKey: "highlightsToday")

까닭


iOS 14(13.4)에서 UIDatePicker가 업데이트되었습니다.
그때는 iOS 13까지 비주얼이 wheels밖에 없었어요.
스타일 매개변수가 추가되어 모양새를 지정할 수 있습니다.
UIDatePicker.swift
@available(iOS 13.4, *)
public enum UIDatePickerStyle : Int {    
    /// Automatically pick the best style available for the current platform & mode.
    case automatic = 0

    /// Use the wheels (UIPickerView) style. Editing occurs inline.
    case wheels = 1

    /// Use a compact style for the date picker. Editing occurs in an overlay.
    case compact = 2

    /// Use a style for the date picker that allows editing in place.
    @available(iOS 14.0, *)
    case inline = 3
}
출전: UIDatePickerStyle
지정되지 않은 경우에는 당연히 자동화입니다.
그리고 어떤 외관을 사용하느냐는 단말기의 버전에 달려 있다.
iOS 13 시스템에서는 wheels이지만 iOS 14에서는 wheels 이외의 시스템입니다.
이 업데이트는 XCode를 11에서 12로 마이그레이션하기 때문에 위 코드가 적용됩니다.
보아하니 오토매틱, 하이라이트 투데이가 존재하지 않는 열쇠가 붕괴되었다.

대응


다음 코드를 추가하면 외관을 지정할 수 있습니다.
iOS13.4 이상, Target가 13.4 미만일 경우 요청 버전을 지정해야 합니다.
향후 iOS 14 이후를 목표로 하는 새로운 프로젝트를 설계할 때
어떤 외관을 사용하는지 검토할 필요가 있다고 할 수 있다.
Sample.swift
if #available(iOS 13.4, *) {
    self.datePickerView.preferredDatePickerStyle = .wheels
}

보태다


iOS 14에 추가된 모양새는 다음과 같습니다.
위에서 설명한 대로 iOS 14에는 UIDatePicker Style을 명시해야 합니다.
OS
automatic
compact
클릭 시
inline
wheels
iOS14





iOS13

-
-
-
-
이상

좋은 웹페이지 즐겨찾기