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