我正在尝试应用渐变作为视图的背景颜色(故事板的主视图) . 代码运行,但没有任何变化 . 我正在使用xCode Beta 2和Swift .
这是代码:
class Colors {
let colorTop = UIColor(red: 192.0/255.0, green: 38.0/255.0, blue: 42.0/255.0, alpha: 1.0)
let colorBottom = UIColor(red: 35.0/255.0, green: 2.0/255.0, blue: 2.0/255.0, alpha: 1.0)
let gl: CAGradientLayer
init() {
gl = CAGradientLayer()
gl.colors = [ colorTop, colorBottom]
gl.locations = [ 0.0, 1.0]
}
}
然后在视图控制器中:
let colors = Colors()
func refresh() {
view.backgroundColor = UIColor.clearColor()
var backgroundLayer = colors.gl
backgroundLayer.frame = view.frame
view.layer.insertSublayer(backgroundLayer, atIndex: 0)
}
}
}
21 回答
我制作了一个UIView扩展,将基本渐变应用于任何视图
使用此自定义类扩展
UIView
.GradientView.swift
用法
gradientView.colors = [UIColor.blackColor().colorWithAlphaComponent(0.8), UIColor.clearColor()]
结果
Swift 3 - 仅使用纹理和SKSpriteNode,不需要UIView
用法:
只需指定视图的框架,即可显示渐变颜色 .
我有这些扩展:
用法:
斯威夫特4
添加视图插座
@IBOutlet weak var gradientView: UIView!
向视图添加渐变
更清晰的代码,允许您将任何
UIColor
传递给GradientLayer
类的实例:Xcode 8.2 • Swift 3.0.2
您可以设计自己的渐变视图,如下所示:
For swift to apply CAGradientLayer to any object (Horizontal and vertical)
How to use
You can check output here
以下是在可重用的Util类文件中进行设置的变体
在您的Xcode项目中:
感谢katwal-Dipak对功能代码的回答
只是修改上面提到的答案 .
试试这个,它对我有用,
您可以添加渐变颜色的起点和终点 .
有关详细说明,请参阅Best Answer或您可以按照CAGradientLayer From Apple
希望这对某些人有帮助 .
如果您需要更改渐变的方向,则必须使用startPoint和endPoint .
此代码适用于 Swift 3.0
在 Swift3 试试这个:
如果你想使用HEX而不是RGBA,只需拖动一个新的空.swift并添加下面提到的代码:
同样,拖动另一个空的.swift文件并添加下面提到的代码:
之后在视图控制器中,在类下实例化你的'Color'类,如下所示:
添加新功能:
在viewDidLoad中声明该函数:
你完成了:))与RGBA相比,使用HEX太简单了 . :d
易于使用的swift 3扩展
用于你的观点,例如
我想为视图添加渐变,然后使用自动布局锚定它 .
这是一个快速扩展,您可以传递任意数量的任意颜色 . 它会在插入之前删除任何先前的渐变,如果需要,它将返回新插入的渐变层以供进一步操作:
如果您有查看集合(多视图),请执行此操作
您为渐变提供的颜色必须是
CGColor
类型 . 因此,将CGColor
数组设置为gl.colors
.正确的代码是: