使 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 渐变的边框颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何用css使边框颜色渐变

如何制作 UIView 的渐变边框?

如何在 Swift 4 的 UIView 中创建带圆角的渐变边框

用css的方法达到边框颜色渐变,最好支持chrome

渐变作为按钮边框颜色?

如何将渐变边框颜色应用于 UIButton?