我观察到 UIPicker 始终保持黑色,
有什么方法可以改变 UIPicker 的颜色和它的选择指示器吗?
谢谢你帮助我。
我假设您要更改的只是选择器边框的颜色,而不是用户与之交互的中心区域的颜色。在这种情况下,请执行以下操作:
创建 4 个“覆盖” UIView 并将它们直接添加到 UIPicker,如下所示:
[picker addSubview: coverView];
将这些视图放置在选择器边框的顶部、底部、左侧和右侧。(您将需要试验尺寸。)将coverViews 的背景颜色设置为您想要的颜色,并调整alpha 以获得来自选取器的渐变阴影。同样,这可能需要一些实验。
另一种方法是创建一个覆盖整个选择器的大封面视图,并覆盖 - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 方法,以便您的封面视图不会拦截用于选择器。
您可以创建自己的自定义选择器,查看苹果网站上的 UICatalog 示例项目,他们展示了如何制作自定义选择器,它可能会对您有所帮助https://developer.apple.com/iphone/library/samplecode/UICatalog/
按照 Amagrammer 的建议创建单个叠加图像,但不要将其作为图像添加到您的视图中,而是将其添加为按钮。然后禁用按钮上的交互,选择器将接收触摸事件,而无需拦截或覆盖任何内容。
您也可以通过添加 5 个 ImageView 来做到这一点。第一个大小为“选择指标”,并将其正好放在“选择指标”之上。现在将 imageView 的 alpha 更改为 0.2 或您想要的任何值,并根据您的选择添加图像/颜色。现在,您将看到您的自定义“选择指标”。此外,您可以为边框做同样的事情。将每个 imageView 添加到 pickerview 的四个边,并使其大小等于边框大小。现在在该 ImageView 中填充您想要的图像/颜色。
您需要在其中创建一个带有 UIImageView 的新 UIView,然后将其设置为单元格的附件。因此,您需要像默认配件一样创建一个图像,但使用您想要的颜色。
UIView* accessoryView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 24, 50)];
UIImageView* accessoryViewImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"NEWIMAGE.png"]];
accessoryViewImage.center = CGPointMake(12, 25);
[accessoryView addSubview:accessoryViewImage];
[cell setAccessoryView:accessoryView];
[accessoryViewImage release];
[accessoryView release];
更改文本颜色这里是解决方案
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
CGRect imageFrame = CGRectMake(0.0, 0.0, 15, 15);
UIImageView *label = [[[UIImageView alloc] initWithFrame:imageFrame] **autorelease**];
if (row == 0)
{
label.backgroundColor = [UIColor redColor];
}
if (row == 1)
{
label.backgroundColor = [UIColor blueColor];
}
if (row == 2)
{
label.backgroundColor = [UIColor blackColor];
}
return label;
}