代码之家  ›  专栏  ›  技术社区  ›  Sunil Targe

如何以编程方式更改uidatepicker的选定日期颜色-swift 4?

  •  0
  • Sunil Targe  · 技术社区  · 7 年前

    我已经以编程方式创建了 uidatepicker 并添加到了 uitableviewscell 。一切正常,但日期颜色即使在应用之后也不会改变。

    我的实现是:

    var startdatepicker:uidatepicker={
    让datepicker=uidatepicker()。
    datepicker.timezone=nstimezone.local
    datepicker.backgroundcolor=uicolor.clear
    datepicker.layer.cornerradius=5.0
    datepicker.datepickerMode=.日期
    datepicker.maximumDate=日期()
    datepicker.ishidden=真
    datepicker.tintcolor=uicolor.white
    datepicker.tag=0
    datepicker.addTarget(self,action:选择器(datepickerValueChanged(datepicker:),用于:.valueChanged)
    返回日期选取器
    }()
    
    
    

    我想在白色中显示,但其在默认值中显示黑色颜色。另请参阅屏幕截图。

    .tintColor.

    我的实施是:

       var startDatePicker: UIDatePicker = {
        let datePicker = UIDatePicker()
        datePicker.timeZone = NSTimeZone.local
        datePicker.backgroundColor = UIColor.clear
        datePicker.layer.cornerRadius = 5.0
        datePicker.datePickerMode = .date
        datePicker.maximumDate = Date()
        datePicker.isHidden = true
        datePicker.tintColor = UIColor.white
        datePicker.tag = 0
        datePicker.addTarget(self, action: #selector(datePickerValueChanged(datePicker:)), for: .valueChanged)
        return datePicker
    }()
    

    我想参加白色但在违约情况下黑色颜色。另请参阅屏幕截图。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Sunil Targe    7 年前

    毕竟,我找到了使用私有API kvc本身的方法( virumax's ans):。

    
    
    

    例如,uidatepicker的外部实例(startdatepicker)也需要设置在kvc以下。

    
    
    
    

    关闭

    例如,外部实例UIDatePicker

    startDatePicker.setValue(UIColor.white, forKeyPath: "textColor")
    

    请参阅更新的屏幕截图:

    enter image description here

        2
  •  1
  •   ViruMax    7 年前

    this 回答。

    使用自动布局将日期选择器集成到布局中。尽管日期 Apple Doc

    但是,如果您想自定义文本颜色,也可以使用下面的私有API来实现这一点:

    datePicker.setValue(UIColor.whiteColor(), forKeyPath: "textColor")
    

    那么,稳定的解决方案是使用 UIPickerView

    func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {
        let attributedString = NSAttributedString(string: pickerData[row], attributes: [NSAttributedStringKey.foregroundColor : UIColor.white])
        return attributedString
    }