编程知识 cdmana.com

iOS 14 UIDatePicker适配问题,使用老的选择器样式

  iOS 14 UIDatePicker 在 13.4 新增了2个属性如下

  @property (nonatomic, readwrite, assign) UIDatePickerStyle preferredDatePickerStyle API_AVAILABLE(ios(13.4)) API_UNAVAILABLE(tvos, watchos);

  @property (nonatomic, readonly, assign) UIDatePickerStyle datePickerStyle API_AVAILABLE(ios(13.4)) API_UNAVAILABLE(tvos, watchos);

  

  1. typedef NS_ENUM(NSInteger, UIDatePickerStyle) { /// Automatically pick the best style available for the current platform & mode.
  2. UIDatePickerStyleAutomatic, /// Use the wheels (UIPickerView) style. Editing occurs inline.
  3. UIDatePickerStyleWheels, /// Use a compact style for the date picker. Editing occurs in an overlay.
  4. UIDatePickerStyleCompact, /// Use a style for the date picker that allows editing in place.
  5. UIDatePickerStyleInline API_AVAILABLE(ios(14.0)) API_UNAVAILABLE(tvos, watchos), }
  6. API_AVAILABLE(ios(13.4)) API_UNAVAILABLE(tvos, watchos);

  原来的界面选择器样式就变成新的样式,默认会设置成UIDatePickerStyleAutomatic,可以看一下注释Use the wheels (UIPickerView) style. Editing occurs inline.

  

  显示的时候是上面的,选择日期的时候成日历控件了

  那怎么才能变成原来的样式呢?

  直接上代码

  if (@available(iOS 13.4, *))

{ _datePicker.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];//新发现这里不会根据系统的语言变了

_datePicker.preferredDatePickerStyle = UIDatePickerStyleWheels; }

else

{ // Fallback on earlier versions }

  根据项目中的界面样式,发现了2个问题,
1.UIDatePicker 设置背景色没有用了,是透明的。
2.语言不会根据系统语言变化了,要自己设置为中文。

  

 

 

  

  我们会发现确实是之前的滚动齿轮样式了,但是位置不是屏幕宽度了,这里我们需要在样式后面重新设置一下UIDatePicker的frame

 

   //之前在这里设置frame是没问题的,但是iOS13.4之后就没效果了

  self.datePicker = [[UIDatePicker alloc]initWithFrame:CGRectMake(0,40, KscreenWidth, 230)];

    //设置日期选择器的样式

    if (@available(iOS 13.4, *))

    {

        self.datePicker.preferredDatePickerStyle=UIDatePickerStyleWheels;

    } else {

        // Fallback on earlier versions

    }

    //注意日期选择器的frame需要在设置样式后重新设置,在上面设置frame是没效果的

    [self.datePicker setFrame:CGRectMake(0,40, KscreenWidth, 230)];

 

 

  效果如下

 

 

版权声明
本文为[快乐天子]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/bigant9527/p/14183677.html

Scroll to Top