Swift中标签蒙版的多色渐变(Xcode)
发布时间:2020-12-14 19:41:46 所属栏目:百科 来源:网络整理
导读:我正在尝试使用3色渐变来为 Xcode中的文本着色,它似乎无法获得我正在寻找的结果.我已经取得了以下成功,但这只能通过渐变给我两种颜色. @IBOutlet weak var textSample: UILabel!override func viewDidLoad() { super.viewDidLoad() textSample.textColor = U
我正在尝试使用3色渐变来为
Xcode中的文本着色,它似乎无法获得我正在寻找的结果.我已经取得了以下成功,但这只能通过渐变给我两种颜色.
@IBOutlet weak var textSample: UILabel! override func viewDidLoad() { super.viewDidLoad() textSample.textColor = UIColor(patternImage: gradientImage(size: textSample.frame.size,color1: CIColor(color: UIColor(red: 1.0,green: 1.0,blue: 1.0,alpha: 1.0)),color2: CIColor(color: UIColor(red: 1.0,alpha: 0.2)))) } func gradientImage(size: CGSize,color1: CIColor,color2: CIColor) -> UIImage { let context = CIContext(options: nil) let filter = CIFilter(name: "CILinearGradient") var startVector: CIVector var endVector: CIVector filter!.setDefaults() startVector = CIVector(x: size.width * 0.5,y: 0) endVector = CIVector(x: size.width * 0.5,y: size.height * 0.8) filter!.setValue(startVector,forKey: "inputPoint0") filter!.setValue(endVector,forKey: "inputPoint1") filter!.setValue(color1,forKey: "inputColor0") filter!.setValue(color2,forKey: "inputColor1") let image = UIImage(cgImage: context.createCGImage(filter!.outputImage!,from: CGRect(x: 0,y: 0,width: size.width,height: size.height))!) return image } 我想做的是有三种颜色的3个位置: location1: y:0.0 location2: y:0.8 location3: y:1.0 color1: UIColour(red: 1,green: 1,blue: 1,alpha: 0.2) color2: UIColour(red: 1,alpha: 1.0) color3: UIColour(red: 1,alpha: 0.45) 我一直在尝试通过将具有3个位置的渐变添加到UIView来简化它,但似乎无论我用UILabel掩盖UIView,我都没有做任何事情.任何建议都会非常有帮助.我已经附上了上面代码所得到的图片,以及如果可能的话我想要实现的一个例子. 解决方法
也许更好的选择将是CAGradientLayer(
AppCoda),然后将其添加到标签
as described here.这是一个例子:
var labelBackground = UIView(frame: label.frame) label.backgroundColor = UIColor.clear label.frame = label.bounds var gradLayer = CAGradientLayer() gradLayer.frame = labelBackground.layer.bounds gradLayer.colors = [UIColor(red: 1.0,alpha: 1.0).CGColor,UIColor(red: 1.0,alpha: 0.2).CGColor,UIColor(red: 1,alpha: 0.45).CGColor] gradientLayer.locations = [0.0,0.8,1.0] labelBackground.layer.addSublayer(gradLayer) labelBackground.addSubview(label) view.addSubview(labelBackground) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |