gpt4 book ai didi

ios - UIButton 上的圆形渐变边框

转载 作者:行者123 更新时间:2023-12-05 01:00:22 27 4
gpt4 key购买 nike

您好,我一直在尝试在我的应用程序中实现一个 UIButton,它具有圆角和渐变边框。我使用以下代码在我的按钮上创建了渐变边框:

    let gradient = CAGradientLayer()
gradient.frame = CGRect(origin: CGPoint.zero, size: self.myBtn.frame.size)
gradient.colors = [colourOne.cgColor, colourTwo.cgColor]

let shape = CAShapeLayer()
shape.lineWidth = 6
shape.path = UIBezierPath(roundedRect: self.myBtn.bounds, cornerRadius: 22).cgPath
shape.strokeColor = UIColor.black.cgColor
shape.fillColor = UIColor.clear.cgColor
gradient.mask = shape

self.myBtn.layer.addSublayer(gradient)

这段代码可以很好地创建边框,但从图片中可以看出,边角没有正确圆角。我尝试过的其他技术使圆角完全不可见。

my button with the above code

另外,我需要按钮是透明填充,所以我不能简单地做一个渐变填充。

如果有人能帮我解释一下,将不胜感激。

最佳答案

您需要在创建 UIBezierPath 之前使用 UIButton boundscornerRadius 设置圆角半径。

试试下面:

self.myBtn.layer.cornerRadius = self.myBtn.frame.height/2
self.myBtn.clipsToBounds = true

let gradient = CAGradientLayer()
gradient.frame = CGRect(origin: CGPoint.zero, size: self.myBtn.frame.size)
gradient.colors = [UIColor.blue.cgColor, UIColor.green.cgColor]

let shape = CAShapeLayer()
shape.lineWidth = 6

shape.path = UIBezierPath(roundedRect: self.myBtn.bounds, cornerRadius: self.myBtn.layer.cornerRadius).cgPath

shape.strokeColor = UIColor.black.cgColor
shape.fillColor = UIColor.clear.cgColor
gradient.mask = shape

self.myBtn.layer.addSublayer(gradient)

输出:-

enter image description here

关于ios - UIButton 上的圆形渐变边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50558474/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com