UISegmentedButton使用图案设置色调颜色

所以我有以下代码:

  UISegmentedControl * segmentedCtrl = [[UISegmentedControl alloc] initWithFrame:CGRectMake(0, 0, 150, 35)];
    [segmentedCtrl setTintColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"duck.png"]]];


 [segmentedCtrl setSegmentedControlStyle:UISegmentedControlStyleBar];

这是我想要使用的鸭子图像:

enter image description here

任何人都在意告诉我为什么它不起作用。我尝试了任何形式的图像,它不工作。仅供参考Iam不想在我的分段控制中设置鸭背景。这只是为了说明使用colorWithPatternImage的setTint不适用于任何类型的图像。

0
额外
意见: 1
是的,我确实尝试过
额外 作者 adit,
清晰的颜色..透明
额外 作者 adit,
self.view工程..但不是在segmentedController tintColor
额外 作者 adit,
您是否尝试过使用这种颜色作为一些较大视图的背景颜色,以确保问题确实存在于 colorWithPatternImage:部分中?
额外 作者 Rok Jarc,
结果是什么?
额外 作者 Rok Jarc,
好的,我下载了你的图片。下载是.jpeg类型(XXWNo.jpg)。创建一个单一的视图应用程序,并在viewDidLoad设置viewControllers查看背景颜色: [self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@“XXWNo.jpg”]]]; 结果是预计在屏幕上的鸭子形象。你的图像是否真的是png(并且下载时firefox会将它转换为jpeg),还是应该将它加载为jpg图像?
额外 作者 Rok Jarc,

5 答案

首先通过在Photochop中打开图像来获取颜色的RGB值,然后使用该值。

段控制背景颜色

0
额外
这将如何帮助他使用背景颜色的图案(图像)?
额外 作者 Rok Jarc,

你有没有试过1px宽度的图片?您使用的图像太大而无法创建图案

0
额外
是的,我没有工作
额外 作者 adit,

UISegmentedControl (as all other UIKit controls, I think) doesn't support pattern colors as tint colors. The tint color is basically used to create a glossy gradient and that would have to be done very differently with an arbitrary pattern.

要自定义背景的外观,请使用 setBackgroundImage:forState:barMetrics:setDividerImage:forLeftSegmentState:rightSegmentState:barMetrics:来代替(当然有适当的图片,图案不是非常适合这些)。

0
额外

UISegmentedControl上的tintColor仅用作计算控件中使用的渐变的基础。你不能很好地有一个渐变图像,所以它只是使用它的一部分。这听起来像你需要的是一个UISegmentedControl的自定义子类。

0
额外
    UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:nil];
    [segmentedControl insertSegmentWithImage:[UIImage imageNamed:@"up_button.png"] atIndex:0 animated:YES];
    [segmentedControl insertSegmentWithImage:[UIImage imageNamed:@"down_button.png"] atIndex:1 animated:YES];
0
额外