在将自定义UIColor分配给UIPickerViews的背景时,我得到了奇怪的颜色。我为textViews和pickerViews创建了一个颜色,如下所示:
let myTextViewBackgroundColor = UIColor(red: 192.0/255.0, green: 255.0/255.0, blue: 255.0/255.0, alpha: 0.35)
我将其指定为:
myTextView.backgroundColor = myTextViewBackgroundColor
keywordPicker.backgroundColor = myTextViewBackgroundColor
这是它的样子: 如您所见,textViews的颜色和选择器的颜色是不同的。设备上的差异似乎比此快照更明显,但自定义颜色看起来很混乱,几乎就像它与默认的灰色背景混合一样。
如果我注释掉上面的pickerView颜色项,我会得到一个灰色背景: 如果我选择标准UIColor,它似乎正常工作。在这个例子中是UIColor.yellowColor。如果我选择白色,那看起来也不错。 我在代码中创建了pickerView并将其分配给没有指定背景颜色的textField。
var keywordPicker : UIPickerView?
keywordPicker = UIPickerView()
keywordPicker?.delegate = self
keywordPicker?.dataSource = self
keywordsForItemTextField.inputView = keywordPicker
keywordPicker.backgroundColor = myTextViewBackgroundColor
为了它的价值,我有一个日期选择器,我用它自己的视图控制器作为模态屏幕创建。在这种情况下,在故事板上创建选择器。我仍然用代码指定我的背景颜色,并且选择器显示正确的颜色。
答案 0 :(得分:0)
我很确定这是因为UIPickerView总是在它上面有银色灰色过滤器(当你将它设置为白色时注意它是灰色的吗?)
答案 1 :(得分:0)
此回复并未揭示问题的原因,但我已将我的决议包括在内以防其他人。我为选定的行显示创建了一个标签,并设置了标签的背景颜色。此标签颜色适用于自定义设置。
我对制作App Pie和文章https://makeapppie.com/2014/10/21/swift-swift-formatting-a-uipickerview/表示赞许 这是灵感。将背景设置为白色:
keywordPicker?.backgroundColor = UIColor.whiteColor()
此外,我添加了一个边框,因此选择器看起来像我创建的textViews:
keywordPicker?.layer.borderColor = UIColor(colorLiteralRed: 212.0/255.0, green: 212.0/255.0, blue: 212.0/255.0, alpha: 1.0).CGColor
keywordPicker?.layer.borderWidth = 1.0
keywordPicker?.layer.cornerRadius = 7.0
keywordPicker?.layer.masksToBounds = true
设置标签:
func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView?) -> UIView {
let pickerLabel = UILabel()
var titleData : String = String()
if pickerView == keywordPicker {
titleData = crsuKeywordPickerList![row]
}
pickerLabel.text = titleData
pickerLabel.backgroundColor = myPickerBackgroundColor
pickerLabel.textAlignment = .Center
return pickerLabel
}//pickerView:viewForRow:...
The result:
As a second option as discussed above, if you instantiate the picker on the storyboard this problem does not appear.
答案 2 :(得分:0)
在我们的例子中,我们在UIPickerView
周围有一个包装器来构建一个自定义日期选择器。将UITextField
类的外观代理设置为inputView
使用暗模式后,如果变为活动的第一个textField
与自定义选择器{{1}相同,则我们会遇到相同的故障但是,如果用户之前使用普通键盘作为inputView
与textField进行交互,则不会出现故障。
在我们的特殊情况下,将此hack添加到包装器视图可以解决问题:
inputView
我们也尝试在- (void)willMoveToWindow:(UIWindow *)newWindow
{
[super willMoveToWindow:newWindow];
if (newWindow) {
self.pickerView.backgroundColor = self.colorPalette.inputViewBackgroundColor;
}
}
方法中设置颜色,但这不起作用。
答案 3 :(得分:0)
在里面写下你的背景颜色变化代码: -
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField == self.tourtextfieldtextField {
//for background color of picker
datePickerView.backgroundColor = .red
//text color of picker
datePickerView.setValue( colorLiteral(red: 0, green: 0.5529411765, blue: 0.537254902, alpha: 1), forKeyPath: "textColor")
datePickerView.setValue(0.8, forKeyPath: "alpha")
}
}
答案 4 :(得分:0)
tkanzakic的回答最终让我改变了UIDatePicker的背景颜色。
这是Swift 4版本:
in app.yaml
env_variables:
MYSQL_USER: username
MYSQL_PASSWORD: password
MYSQL_DSN: mysql:unix_socket=/cloudsql/instancename;dbname=yourdbname
in your script:
$dsn=getenv('MYSQL_DSN');
$user=getenv('MYSQL_USER');
$pass=getenv('MYSQL_PASSWORD');
$dbh = new PDO($dsn, $user, $pass);
根据您的喜好更改customBackgroundColor属性。
答案 5 :(得分:0)
swift 4.2 / xcode 10:
背景色需要在主线程中设置:
DispatchQueue.main.async {
keywordPicker.backgroundColor = myTextViewBackgroundColor
}