使 UIView 渐变的边框颜色
Posted
技术标签:
【中文标题】使 UIView 渐变的边框颜色【英文标题】:Make border color of UIView gradient 【发布时间】:2017-10-08 15:58:33 【问题描述】:如何制作 UIView 渐变的边框颜色?
我已经从我的情节提要中声明了一个 UIView,并且我知道如何使边框颜色纯色。但我不知道如何制作边框渐变。
@IBOutlet weak var view: UIView!
override func awakeFromNib()
super.awakeFromNib()
let gradient = CAGradientLayer()
gradient.colors = [UIColor.white.cgColor, UIColor.black.cgColor]
view.backgroundColor = nil
view.layer.cornerRadius = view.bounds.width / 2
view.layer.borderWidth = 3
view.layer.borderColor = colorOutline.cgColor
nah.textColor = colorCircleBlue
【问题讨论】:
可能重复。看看这个答案***.com/a/36836787/2000162 @TomCobo 答案很好。你知道我怎样才能让框架变成圆形吗? view.layer.masksToBounds = true; view.layer.cornerRadius = view.bounds.width / 2 @TomCobo 渐变框架是正方形。我需要使渐变框架圆形 【参考方案1】:如果你想制作圆形渐变框架试试这个:
let gradient = CAGradientLayer()
gradient.frame = CGRect(origin: CGPoint.zero, size: self.yourView.frame.size)
gradient.colors = [UIColor(red: 1, green: 0.2527923882, blue: 1, alpha: 1).cgColor, UIColor(red: 0.1802595352, green: 0.06151589641, blue: 0.2927506345, alpha: 1).cgColor]
let shape = CAShapeLayer()
shape.lineWidth = 2
shape.path = UIBezierPath(roundedRect: yourView.bounds.insetBy(dx: 2, dy: 2), cornerRadius: yourView.frame.width * 0.5).cgPath
shape.strokeColor = UIColor.black.cgColor
shape.fillColor = UIColor.clear.cgColor
gradient.mask = shape
self.yourView.layer.addSublayer(gradient)
您的视图的高度和重量之间的纵横比必须为 1 // 粉色和紫色 => [UIColor(red: 1, green: 0.2527923882, blue: 1, alpha: 1).cgColor, UIColor(red: 0.1802595352, green: 0.06151589641, blue: 0.2927506345, alpha: 1).cgColor ]
【讨论】:
【参考方案2】:你好什么
下面我举一个例子让你完成你的任务。
我把我的代码放在 didSet 里面,但是如果你愿意,你也可以把代码放在 didLoad 里面。
我也不知道是谁做的,我搜索并发现了这个答案。
@gvuksic explain how create a border gradient on UIView us here
let gradient = CAGradientLayer()
gradient.frame = CGRect(origin: CGPoint.zero, size: self.view.frame.size)
gradient.colors = [UIColor.blue.cgColor, UIColor.green.cgColor]
let shape = CAShapeLayer()
shape.lineWidth = 2
shape.path = UIBezierPath(rect: self.view.bounds).cgPath
shape.strokeColor = UIColor.black.cgColor
shape.fillColor = UIColor.clear.cgColor
gradient.mask = shape
self.view.layer.addSublayer(gradient)
【讨论】:
这是完美的。但是,你知道我怎样才能让 gradient.frame 变成圆形吗? 试试这个项目的开源代码:github.com/tonsser/Cirque,如果你想自定义你可以。以上是关于使 UIView 渐变的边框颜色的主要内容,如果未能解决你的问题,请参考以下文章