我们的UIPickerView背景较暗,选择线难以辨认。反正有没有把它们变成我选择的颜色?
更新:我在谈论" Panda"的上方和下方。项目
Cat
Dog
Elephant
-----------
Panda
-----------
Bear
Giraffe
答案 0 :(得分:2)
我能提供的最佳解决方案是将2个UIImages放在拾取轮上,宽度为1,长度根据您的喜好设置。这就是我克服这一点的方式。
如果您需要多个大小的视图,它不能正常工作,因此以编程方式执行此操作以满足您的大小更改将是下一个最佳解决方案。要使用if语句以编程方式更改大小:
How to resize the image programmatically in objective-c in iphone
如果您根据方向更改大小,请添加一个处理方向的if
语句,如下所示:
if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation))
{
// code for landscape orientation
}
if (UIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation))
{
// code for Portrait orientation
}
亲切的问候
答案 1 :(得分:2)
这已在此处回答:How to change the color of UIPickerView Selector
基本上:
pickerView.subviews[1].backgroundColor = UIColor.whiteColor()
pickerView.subviews[2].backgroundColor = UIColor.whiteColor()
答案 2 :(得分:1)
尝试这样的事情:
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
//On Selecting the component row
if (component == 0) {
} else if (component == 1) {
[quantityPickerDelegate didChangeLabelText:[pickerArray objectAtIndex:row]];// delegate passing the selected value
[pickerView reloadComponent:component]; //This will cause your viewForComp to hit
}
}
- (UIView *)viewForRow:(NSInteger)row forComponent:(NSInteger)component
{
//...
//Your usual code
pickerLabel.textColor = defaultColor;
if([self.pickerView selectedRowInComponent:component] == row) //this is the selected one, change its color
{
pickerLabel.textColor = [UIColor colorWithRed:0.0745 green:0.357 blue:1.0 alpha:1];
}
}
答案 3 :(得分:1)
Swift 4.2
func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
pickerView.subviews[1].backgroundColor = UIColor.white
pickerView.subviews[2].backgroundColor = UIColor.white
return view
}
这对我有用!
答案 4 :(得分:1)
您可以使用UIPickerView
的专用标题来更改选择器视图选择线的颜色。只需为_magnifierLineColor
键设置颜色
pickerView.setValue(UIColor.red, forKey: "_magnifierLineColor")
答案 5 :(得分:0)
这就是我在 Swift 4.2
中所做的private let pickerSelectionIndicatorHeight: CGFloat = 62.0
let pickerSelectionIndicatorTopLine = UIView()
let pickerSelectionIndicatorBottomLine = UIView()
pickerSelectionIndicatorTopLine.backgroundColor = UIColor.white
pickerSelectionIndicatorBottomLine.backgroundColor = UIColor.white
picker.addSubview(pickerSelectionIndicatorTopLine)
picker.addSubview(pickerSelectionIndicatorBottomLine)
pickerSelectionIndicatorTopLine.translatesAutoresizingMaskIntoConstraints = false
pickerSelectionIndicatorTopLine.leadingAnchor.constraint(equalTo: picker.leadingAnchor, constant: 0).isActive = true
pickerSelectionIndicatorTopLine.trailingAnchor.constraint(equalTo: picker.trailingAnchor, constant: 0).isActive = true
pickerSelectionIndicatorTopLine.heightAnchor.constraint(equalToConstant: 1).isActive = true
pickerSelectionIndicatorTopLine.centerYAnchor.constraint(equalTo: picker.centerYAnchor, constant: -(pickerSelectionIndicatorHeight / 2 + 1.0)).isActive = true
pickerSelectionIndicatorBottomLine.translatesAutoresizingMaskIntoConstraints = false
pickerSelectionIndicatorBottomLine.leadingAnchor.constraint(equalTo: picker.leadingAnchor, constant: 0).isActive = true
pickerSelectionIndicatorBottomLine.trailingAnchor.constraint(equalTo: picker.trailingAnchor, constant: 0).isActive = true
pickerSelectionIndicatorBottomLine.heightAnchor.constraint(equalToConstant: 1).isActive = true
pickerSelectionIndicatorBottomLine.centerYAnchor.constraint(equalTo: picker.centerYAnchor, constant: (pickerSelectionIndicatorHeight / 2 + 1.0)).isActive = true
如果需要,当然可以将这些代码封装在扩展名中。
答案 6 :(得分:0)
将此添加到您的UIPickerView
的{{1}},viewForRow
或titleForRow
:
attributedTitleForRow
这应该更安全一些,因为我们正在寻找高度应该很短的子视图。如果Apple更改了视图层次结构,则很可能不会弄乱任何东西:)