zoukankan      html  css  js  c++  java
  • 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)];

      效果如下

  • 相关阅读:
    LeetCode:2. 两数相加
    LeetCode:1. 两数之和
    property类的使用
    JAVA-数据库连接【转】
    快速将excel数据保存到Oracle数据库中【转】
    Oracle导入excel数据方法汇总[转]
    Maven 系列 一 :Maven 快速入门及简单使用【转】
    Maven 系列 二 :Maven 常用命令,手动创建第一个 Maven 项目【转】
    开源项目导入eclipse的一般步骤[转]
    JavaScript基础---作用域,匿名函数和闭包【转】
  • 原文地址:https://www.cnblogs.com/bigant9527/p/14183677.html
Copyright © 2011-2022 走看看