Ios 渐变色作为Swift4中UIButton的背景色
我有一个按钮,我试图设置它的背景颜色梯度。我有三个十六进制值,我转换成RGB,在我的代码中写了三个值,并将所有三个值传递给按钮框。但是当我运行应用程序按钮时,背景不会根据我在代码中设置的颜色而改变。我得到三种颜色代码的代码是Ios 渐变色作为Swift4中UIButton的背景色,ios,uibutton,swift4,Ios,Uibutton,Swift4,我有一个按钮,我试图设置它的背景颜色梯度。我有三个十六进制值,我转换成RGB,在我的代码中写了三个值,并将所有三个值传递给按钮框。但是当我运行应用程序按钮时,背景不会根据我在代码中设置的颜色而改变。我得到三种颜色代码的代码是 let gradientColor = CAGradientLayer() gradientColor.frame = loginButton.frame let color1 = UIColor(red: 183, green: 46, blue: 79
let gradientColor = CAGradientLayer()
gradientColor.frame = loginButton.frame
let color1 = UIColor(red: 183, green: 46, blue: 79, alpha: 1)
let color2 = UIColor(red: 232, green: 79, blue: 80, alpha: 1)
let color3 = UIColor(red: 145, green: 21, blue: 79, alpha: 1)
gradientColor.colors = [color1,color2,color3]
self.loginButton.layer.addSublayer(gradientColor)
试试这个,看看:
@IBOutlet weak var loginButton: UIButton!
func testGradientButton() -> Void {
let gradientColor = CAGradientLayer()
gradientColor.frame = loginButton.frame
gradientColor.colors = [UIColor.blue.cgColor,UIColor.red.withAlphaComponent(1).cgColor]
self.loginButton.layer.insertSublayer(gradientColor, at: 0)
}
结果如下:
还要注意:代码中RGB颜色的值远高于其正常值。请查看控制台日志,它可能会打印以下错误:
[Graphics]UIColor使用远超出预期范围的组件值创建。在要调试的UIColorBreakForOutOfRangeColorComponents上设置断点。此消息将只记录一次
将所有值除以255.0,然后使用insertSubLayer
函数
let color1 = UIColor(red: 183.0/255.0, green: 46.0/255.0, blue: 79.0/255.0, alpha: 1)
let color2 = UIColor(red: 232.0/255.0, green: 79.0/255.0, blue: 80.0/255.0, alpha: 1)
let color3 = UIColor(red: 145.0/255.0, green: 21.0/255.0, blue: 79.0/255.0, alpha: 1)
以下是颜色代码值的结果:
func testGradientButton() -> Void {
let gradientColor = CAGradientLayer()
gradientColor.frame = loginButton.frame
let color1 = UIColor(red: 183.0/255.0, green: 46.0/255.0, blue: 79.0/255.0, alpha: 1)
let color2 = UIColor(red: 232.0/255.0, green: 79.0/255.0, blue: 80.0/255.0, alpha: 1)
let color3 = UIColor(red: 145.0/255.0, green: 21.0/255.0, blue: 79.0/255.0, alpha: 1)
gradientColor.colors = [color1.cgColor,color2.cgColor,color3.cgColor]
self.loginButton.layer.insertSublayer(gradientColor, at: 0)
}
gradientColor.frame=loginButton.frame
您可能需要执行gradientColor.frame=loginButton.bounds
。另外,UIColor(红色:绿色:蓝色:alpha:)
等待0到1之间的值。因此,UIColor(红色:183/255,绿色:46/255,蓝色:79/255,alpha:1)
(对于每种颜色,依此类推)它没有改变背景,因为我遵循了你的程序@LarmegradientColor.color
需要是一个CGColor
数组,而且:它仍然没有得到颜色。@Larme当您输入这部分代码时,loginButton.frame
的框架是什么?可能是自动布局问题。它没有颜色@Krunalit并没有覆盖整个按钮背景区域,我已经创建了按钮角半径,但在应用渐变后,它正在删除曲线边。@KRUNALOBISTER是因为gradientColor.frame=loginButton.frame
仍然没有出现在完整按钮上,它在右端边之前停止,并在按钮边消失@克鲁纳尔