ios - 应用 CAGradientLayer 到 layer.borderColor

标签 ios swift

我正在尝试实现带有渐变的带下划线的 UITextField。因此我创建了一个带有函数 underlined() 的扩展。

为了获得渐变效果,我创建了一个 CAGradientLayer 并进行了以下自定义:

func underlined(){
        let color = UIColor(red: 11/255, green: 95/255, blue: 244/255, alpha: 1).cgColor
        let sndColor = UIColor(red: 106/255, green: 178/255, blue: 255/255, alpha: 1).cgColor

        let gradient: CAGradientLayer = CAGradientLayer()
        gradient.colors = [color, sndColor]
        gradient.locations = [0.0, 1.0]
        gradient.startPoint = CGPoint(x: 0, y: 0)
        gradient.endPoint = CGPoint(x: 1, y: 0)
        let width = CGFloat(2.0)
        gradient.frame = CGRect(x: 0, y: self.frame.size.height - width, width:  self.frame.size.width, height: self.frame.size.height)
        gradient.borderWidth = width

        self.layer.insertSublayer(gradient, at: 0)
        self.layer.masksToBounds = true
    }

正在显示下划线,但它只是纯黑色 - 我尝试更改颜色,但它仍然是黑色(问题已过时 - 请参阅编辑)。

有人看到这个问题吗?

编辑:
添加 gradient.borderColor = UIColor.blue.cgColor 让我改变线条的颜色 - 但如何在边框颜色上应用渐变?

最佳答案

从您的代码中删除以下行:

gradient.borderWidth = width

截图:

enter image description here

您的代码无法正常工作,因为 borderWidth 覆盖了整个渐变框架。尝试设置 borderColor,然后您会看到不同之处。

gradient.borderColor = UIColor.red.cgColor

如果您仍然遇到任何问题,请告诉我。

关于ios - 应用 CAGradientLayer 到 layer.borderColor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56101285/

相关文章:

ios - Swift 项目比我预期的要大

ios - @IBDesignable , NSLayoutConstraint 用于 super View 的比例乘数宽度?

ios - 如何从 UITextField 中的外部键盘检测到 "command + backspace"

iOS:JSON 显示字典无序。如何呈现重新排序?

swift - AudioUnit - 在 Swift 中控制左声道和右声道输出

ios - 多值设置未使用默认值初始化

ios - Swift 3 手势识别器 path.boundingBox 是无限的

ios - 如何从 Swift 中的两个结构数组中删除公共(public)项

ios - UIStepper - 查看它是递增还是递减

ios - 单击时折叠和展开 UI