在textbegin上更改textfield的底视图颜色?

时间:2017-10-30 08:30:23

标签: ios swift uiview

我在下面的UI中创建了一个登录界面。我在每个文本字段下方添加了UIView&改变了一些颜色视图。 enter image description here

要更改视图的一些初始颜色,我已经为UIView创建了一个自定义类,并在其中添加了代码

import Foundation

class BottomView:UIView {

    override func draw(_ rect: CGRect) {

        let topRect = CGRect(x:0, y:0, width : 20, height: rect.size.height);
        // Fill the rectangle with grey
        UIColor.darkGray.setFill()
        UIRectFill(topRect)

    }
    }

现在我想要当用户点击或聚焦文本字段的文本字段颜色应该更改为全彩色。为此,我使用下面的代码。

 func textFieldDidBeginEditing(_ textField: UITextField) {

        if textField == textFieldFirstName {

            UIView.animate(withDuration: 1.0, delay: 0.0, options:[.repeat, .autoreverse], animations: {
                self.bottomViewEmail.backgroundColor = UIColor.green
            }, completion:nil)

        }


    }

现在它改变了视图的颜色,但不是从begining.it改变UIView的颜色,从那里已经有颜色。

所以请建议我该怎么办?

此外,我想当用户移动到密码时,前一个文本视图的颜色应该与最初的颜色相同。

1 个答案:

答案 0 :(得分:0)

我认为背景颜色和填充颜色存在一些冲突

尝试这种方式仅使用填充颜色将其添加到视图的子类

func fillColor(with color:UIColor,width:CGFloat) {

    let topRect = CGRect(x:0, y:0, width : width, height: self.bounds.height);

    color.setFill()
    UIRectFill(topRect)

}

override func draw(_ rect: CGRect) {

    self.fillColor(with: .gray, width: 20)

}

来自UIViewController类

func textFieldDidBeginEditing(_ textField: UITextField) {

    if textField == textFieldFirstName {

        UIView.animate(withDuration: 1.0, delay: 0.0, options:[.repeat, .autoreverse], animations: {
            self.bottomViewEmail.fillColor(with: .green, width: self.bottomViewEmail.bounds.width)

    }


}

希望它对你有所帮助