Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UITextField渐变背景色_Ios_Swift_Uitextfield - Fatal编程技术网

Ios UITextField渐变背景色

Ios UITextField渐变背景色,ios,swift,uitextfield,Ios,Swift,Uitextfield,我试图创建一个具有渐变背景的UITextField,在两种颜色之间移动 我想从本质上创造这种效果- 我以编程方式构建视图,而不是使用故事板 我尝试在UIView周围基于其他答案添加扩展,但这对我的文本字段没有影响 背景仍然是白色的 extension UIView { func setGradient(startColor:UIColor,endColor:UIColor) { let gradient:CAGradientLayer = CAGradien

我试图创建一个具有渐变背景的UITextField,在两种颜色之间移动

我想从本质上创造这种效果-

我以编程方式构建视图,而不是使用故事板

我尝试在UIView周围基于其他答案添加扩展,但这对我的文本字段没有影响

背景仍然是白色的

extension UIView {      
    func setGradient(startColor:UIColor,endColor:UIColor) {
        let gradient:CAGradientLayer = CAGradientLayer()
        gradient.colors = [startColor.cgColor, endColor.cgColor]
        gradient.locations = [0.0 , 1.0]
        gradient.startPoint = CGPoint(x: 0.0, y: 0.0)
        gradient.endPoint = CGPoint(x: 0.0, y: 1.0)
        gradient.frame = self.bounds
        self.layer.insertSublayer(gradient, at: 0)
    }
}
然后我可以这样应用它

private let emailTextField: UITextField = {
    let  tf = UITextField()
    CommonTextField.commonProps(tf: tf, placeholder: "Email")
    tf.setGradient(startColor: .blue, endColor: .purple)
    return tf
}()
然而,它什么也不做。我尝试在UITextField上进行扩展,但是没有取得任何结果

编辑

我更新了我的扩展方法如下

extension UITextField {
    func setGradient(startColor: UIColor, endColor: UIColor) {
        let gradient: CAGradientLayer = CAGradientLayer()
        gradient.colors = [startColor.cgColor, endColor.cgColor]
        gradient.locations = [0.0 , 1.0]
        gradient.startPoint = CGPoint(x: 0.0, y: 0.0)
        gradient.endPoint = CGPoint(x: 0.0, y: 1.0)
        gradient.frame = self.bounds
        self.layer.addSublayer(gradient)
    }
}
private let emailTextField: UITextField = {
    let  tf = UITextField()
    CommonTextField.commonProps(tf: tf, placeholder: "Email")
    tf.setGradient(startColor: .blue, endColor: .purple)
    return tf
}()
正在创建我的文本字段,如下所示

extension UITextField {
    func setGradient(startColor: UIColor, endColor: UIColor) {
        let gradient: CAGradientLayer = CAGradientLayer()
        gradient.colors = [startColor.cgColor, endColor.cgColor]
        gradient.locations = [0.0 , 1.0]
        gradient.startPoint = CGPoint(x: 0.0, y: 0.0)
        gradient.endPoint = CGPoint(x: 0.0, y: 1.0)
        gradient.frame = self.bounds
        self.layer.addSublayer(gradient)
    }
}
private let emailTextField: UITextField = {
    let  tf = UITextField()
    CommonTextField.commonProps(tf: tf, placeholder: "Email")
    tf.setGradient(startColor: .blue, endColor: .purple)
    return tf
}()

扩展名应用于文本字段而不是UIView,注意使用self.layer.addSublayernotself.layer.insertSublayer

/////

使用


扩展名应用于文本字段而不是UIView,注意使用self.layer.addSublayernotself.layer.insertSublayer

/////

使用


textfield仍然是白色的,它可以按照我在回答中的方式应用吗?嗯,不走运,textfield如果仍然是白色的,将扩展UIView更改为扩展UITextField我已经更新了我的问题,textfield仍然是白色的,但是我的扩展和组件注册为上面的textfield仍然是白色的,它是否可以按照我在回答中的方式应用?嗯,运气不好,文本字段如果仍然为白色,将扩展UIView更改为扩展UITextField我已经更新了我的问题,文本字段仍然为白色,但是我的扩展和组件注册如上,Sh_Khan提出的更正效果良好;你的情况如何?文本字段是否可见?文本字段在那里但仍然是白色的?是的,它仍然是可见的,但它是白色的。Sh_Khan提出的更正很好;你的情况如何?文本字段是否可见?文本字段在那里但仍然是白色的?是的,它仍然可见,但它是白色的。
self.textField.setGradient(startColor:UIColor.red, endColor: UIColor.blue)