Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何更改UIDatePicker背景色?在Swift 3.0中_Ios_Swift_Uidatepicker - Fatal编程技术网

Ios 如何更改UIDatePicker背景色?在Swift 3.0中

Ios 如何更改UIDatePicker背景色?在Swift 3.0中,ios,swift,uidatepicker,Ios,Swift,Uidatepicker,我正在文本字段中为我的键盘添加一个日期选择器。 我可以改变datePicker文本的颜色,甚至它的alpha,但我不能改变它的背景颜色,即使给了我这个选项 我知道UIDatePicker不太可定制,但因为有一个背景色选项给了我,我很惊讶为什么它没有改变 有什么想法吗 这是我的密码: datePickerView.backgroundColor = .clear datePickerView.setValue(backgroundTint, forKeyPath: "te

我正在文本字段中为我的键盘添加一个日期选择器。 我可以改变datePicker文本的颜色,甚至它的alpha,但我不能改变它的背景颜色,即使给了我这个选项

我知道UIDatePicker不太可定制,但因为有一个背景色选项给了我,我很惊讶为什么它没有改变

有什么想法吗

这是我的密码:

    datePickerView.backgroundColor = .clear
    datePickerView.setValue(backgroundTint, forKeyPath: "textColor")
    datePickerView.datePickerMode = UIDatePickerMode.date
    inputView.addSubview(datePickerView)
编辑

我正在UITableViewCell的子类中编写代码--->

导入UIKit

类AgeTableViewCell:UITableViewCell,UITextFieldDelegate{

设maxLength:Int=10
让ageTextField=ProfileNameUITextField()
重写func awakeFromNib(){
super.awakeFromNib()
//初始化代码
}
重写初始化(样式:UITableViewCellStyle,reuseIdentifier:String?){
init(样式:style,reuseIdentifier:reuseIdentifier)
self.contentView.addSubview(ageTextField)
self.contentView.backgroundColor=.clear
if self.responses(to:#选择器(setter:UITableViewCell.separatorInset)){
self.separatorInset=UIEdgeInsets.zero
}
if self.responses(to:#选择器(setter:UIView.layoutMargins)){
self.layoutMargins=UIEdgeInsets.zero
}
if self.responses(to:#选择器(setter:UIView.preservesPerviewLayoutMargins)){
self.preservesPerViewLayoutMargins=false
}
}
必需的初始化(编码器aDecoder:NSCoder){
super.init(编码器:aDecoder)!
}
覆盖func布局子视图(){
super.layoutSubviews()
让宽度=self.bounds.width
设高度=自限高度
设边框宽度:CGFloat=1.0
设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=颜色
ageTextField.textColor=.white
ageTextField.tintColor=.white
ageTextField.delegate=self
ageTextField.attributedPlaceholder=NSAttributedString(字符串:“出生日期”,
属性:[NSForegroundColorAttributeName:UIColor.lightGray])
setUpAgeTextFieldsInputView()
}
覆盖功能设置选定(uSelected:Bool,动画:Bool){
super.setSelected(选定,动画:动画)
//为所选状态配置视图
}
func textField(textField:UITextField,shouldChangeCharacters范围:NSRange,replacementString:string)->Bool{
让oldLength:Int=(textField.text?.characters.count)!
let replacementLength:Int=string.characters.count
让rangeLength:Int
=Int(范围.长度)
设newLength=oldLength-rangeLength+replacementLength
让returnKey=(字符串为NSString)。范围(共:“\n”)。位置!=NSNotFound

return newLength它似乎在工作,只是不一定按照您希望的方式工作

例如,将
背景颜色
更改为明显的颜色(而不是
.clear
)显然有效。它会将色调更改为该颜色

更改
“textColor”
属性也会产生一些明显的变化,但控件似乎正在基于背景动态计算准确的前景颜色,这样它总是清晰可见。如果您尝试使用
.ligtGray
黑色等颜色,这一点就会变得明显

抱歉,对于进一步的定制,您运气不好(


它似乎在起作用,只是不一定按照你想要的方式起作用

例如,将
背景颜色
更改为明显的颜色(而不是
.clear
)显然有效。它会将色调更改为该颜色

更改
“textColor”
属性也会产生一些明显的变化,但控件似乎正在基于背景动态计算准确的前景颜色,这样它总是清晰可见。如果您尝试使用
.ligtGray
黑色等颜色,这一点就会变得明显

抱歉,对于进一步的定制,您运气不好(


查看代码后,我意识到我一直在为文本字段分配键盘类型,然后我试图将其inputview更改为datepicker视图。删除该分配修复了我的bgcolor问题。

查看代码后,我意识到我一直在为文本字段分配键盘类型,然后我被拒绝了试图将其inputview更改为datepicker视图。删除该分配修复了我的bgcolor问题。

您可能需要设置UIKeyboardType=.default和UIKeyboardAppearance=.default

您可能需要设置UIKeyboardType=.default和UIKeyboardAppearance=.default

datePickerView.backgroundColor=UIColor.blue
datePickerView.backgroundColor=.yellow
或任何其他颜色都有效。您必须为您的问题提供更多上下文。datePickerView.backgroundColor=UIColor.blue
datePickerView.backgroundColor=.yellow
或任何其他颜色都有效。您必须为您的问题提供更多上下文。
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)
}
picker.backgroundColor = .white
picker.setValue(UIColor.red, forKey:"textColor")