【发布时间】:2019-07-15 23:14:43
【问题描述】:
我正在使用UISegmentControl,并尝试为每个细分的视图提供自定义UIColor。对于纯色来说,这很容易做到。我只是这样做:
providerSegmentedControl.subviews[1].tintColor = UIColor.red
索引 1 处的段现在将被染成红色。
但是,我正在尝试为我的细分之一 UIView 的 tintColor 添加渐变。我的资产中有一个名为“AppleMusicGradient”的图像,如下所示:
我正在尝试使用UIColor(patternImage:) 从此图像创建UIColor。代码如下所示:
//UIImage.resize is a UIImage extension function that simply resizes a UIImage to the given CGRect
let image = UIImage(named: "AppleMusicGradient")!.resize(targetSize: providerSegmentedControl.subviews[2].frame.size)
providerSegmentedControl.subviews[2].tintColor = UIColor(patternImage: image)
但是,这种方法似乎只是部分有效。 When the given segment is selected, this gradient isn't visible at all.并且当给定的段未被选中时,渐变仅在段内的标签上可见,即通常似乎不存在边框。
请参阅“Apple Music”部分。
【问题讨论】:
-
说大卫 - 与您的问题无关。当你需要这样的渐变时。一个非常好的事情就是............制作它,而不是使用准备好的PNG。 (有两个重要原因(1)节省大量空间(2)在每台设备上获得精确、令人敬畏、终极的分辨率。)如何:stackoverflow.com/a/47760444/294884希望它是有趣的
-
@Fattie 感谢您的推荐。我避免使用
CALayer作为渐变的原因是我不确定如何使用CALayer为UISegmentedControl子视图获得类似的效果。即我可以使用UIImage设置tintColor,不确定我是否可以对CALayer说同样的话。
标签: ios swift uiimage uisegmentedcontrol uicolor