我在我的键盘上添加一个datePicker文本框。 我能够改变datePicker的文字颜色或甚至它的alpha,但我不能改变它的backgroundColor,即使这个选项给了我。如何更改UIDatePicker backgroundColor?在Swift 3.0
我知道UIDatePicker不是非常可定制的,但由于有一个backgroundColor选项给我,我很惊讶为什么它没有改变。
有什么想法?
这里是我的代码:
datePickerView.backgroundColor = .clear
datePickerView.setValue(backgroundTint, forKeyPath: "textColor")
datePickerView.datePickerMode = UIDatePickerMode.date
inputView.addSubview(datePickerView)
编辑
我写我的代码中的UITableViewCell ---的一个子类>
进口的UIKit
类AgeTableViewCell :UITableViewCell,UITextFieldDelegate {
let maxLength: Int = 10
let ageTextField = ProfileNameUITextField()
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
self.contentView.addSubview(ageTextField)
self.contentView.backgroundColor = .clear
if self.responds(to: #selector(setter: UITableViewCell.separatorInset)) {
self.separatorInset = UIEdgeInsets.zero
}
if self.responds(to:#selector(setter: UIView.layoutMargins)) {
self.layoutMargins = UIEdgeInsets.zero
}
if self.responds(to: #selector(setter: UIView.preservesSuperviewLayoutMargins)) {
self.preservesSuperviewLayoutMargins = false
}
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
}
override func layoutSubviews() {
super.layoutSubviews()
let width = self.bounds.width
let height = self.bounds.height
let borderWidth: CGFloat = 1.0
let color = UIColor.white.withAlphaComponent(0.1)
ageTextField.frame = CGRect(x: 0.0, y: borderWidth, width: width - borderWidth, height: height - 2 * borderWidth)
ageTextField.borderStyle = .none
ageTextField.backgroundColor = color
ageTextField.textColor = .white
ageTextField.tintColor = .white
ageTextField.delegate = self
ageTextField.attributedPlaceholder = NSAttributedString(string:"Birth Date",
attributes:[NSForegroundColorAttributeName: UIColor.lightGray])
setUpAgeTextFieldsInputView()
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let oldLength: Int = (textField.text?.characters.count)!
let replacementLength: Int = string.characters.count
let rangeLength: Int
= Int(range.length)
let newLength = oldLength - rangeLength + replacementLength
let returnKey = (string as NSString).range(of: "\n").location != NSNotFound
return newLength <= maxLength || returnKey
}
func setUpAgeTextFieldsInputView() {
let inputView = UIView(frame: CGRect(x: 0.0, y: 0.0, width: self.bounds.width, height: 140))
inputView.backgroundColor = backgroundTint
// setup date picker
let datePickerView = UIDatePicker(frame: CGRect(x: 0.0, y: 40.0, width: self.bounds.width, height: 100))
datePickerView.backgroundColor = .clear
datePickerView.setValue(backgroundTint, forKeyPath: "textColor")
datePickerView.datePickerMode = UIDatePickerMode.date
// set the date picker max date and showing date
let gregorian = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian)!
let currentDate = NSDate()
let component = NSDateComponents() ; component.year = -18
let date = gregorian.date(byAdding: component as DateComponents, to: currentDate as Date, options: NSCalendar.Options(rawValue: 0))
datePickerView.date = date!
datePickerView.maximumDate = currentDate as Date
inputView.addSubview(datePickerView)
// Make done button
let doneButton = UIButton(frame: CGRect(x: 0.0, y: 1.0, width: self.bounds.width, height: 38.0))
doneButton.backgroundColor = UIColor.white.withAlphaComponent(0.1)
doneButton.setTitle("Done", for: UIControlState.normal)
doneButton.setTitleColor(appPink, for: UIControlState.normal)
doneButton.setTitleColor(UIColor.gray, for: UIControlState.highlighted)
inputView.addSubview(doneButton)
// set actions for buttons and picker
doneButton.addTarget(self, action: #selector(done), for: UIControlEvents.touchUpInside)
ageTextField.inputView = inputView
datePickerView.addTarget(self, action: #selector(handleDatePicker(_:)), for: UIControlEvents.valueChanged)
}
func done() {
self.endEditing(true)
}
func handleDatePicker(_ sender: UIDatePicker) {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
ageTextField.text = dateFormatter.string(from: sender.date)
}
}
datePickerView.backgroundColor = UIColor.blue – negaipro
'datePickerView.backgroundColor = .yellow'或Ÿ其他颜色的作品。你必须为你的问题提供更多的上下文。 – Frankie