Swift 4 - UITextfield边框半径颜色问题

时间:2017-11-18 15:05:38

标签: ios swift uitextfield swift4 cornerradius

我目前正在尝试使用UITextfields(我是初学者)。 现在我已经设置了我的应用程序的背景颜色并设置了边框半径,但这是我在这样做时遇到的一个小问题。

我的代码:

        superView.backgroundColor = backgroundColorrr
        loginView.backgroundColor = backgroundColorrr

        loginLabel.textColor = UIColor.white
        loginLabel.text = "Login"

        loginButton.layer.cornerRadius = 5
        loginButton.layer.borderWidth = 2.0
        loginButton.imageView?.contentMode = UIViewContentMode.scaleToFill
        loginButton.layer.borderColor = UIColor.lightGray.cgColor
        loginButton.layer.backgroundColor = backgroundColorrr.cgColor
        loginButton.titleLabel?.textColor = UIColor.white
        loginButton.titleLabel?.text = "Login"

        userNameTextField.layer.cornerRadius = 15.0
        userNameTextField.layer.backgroundColor = backgroundColorrr.cgColor
        userNameTextField.layer.borderWidth = 0.5

我的结果:

current layout in simulator

你看到我想要实现的是与屏幕的其他部分具有相同的背景颜色(我不希望文本字段的边框旁边有白色。同样如此使用我的按钮,边框半径根本不会改变(使用的图像尺寸与我按钮的大小相同。

欢迎任何帮助!

1 个答案:

答案 0 :(得分:8)

如果您要应用layer.masksToBounds = true需要设置cornerRadius

设置 userNameTextField.layer.masksToBounds = trueloginButton.layer.masksToBounds = true

您的完整代码应如下所示:

superView.backgroundColor = backgroundColorrr
loginView.backgroundColor = backgroundColorrr

loginLabel.textColor = UIColor.white
loginLabel.text = "Login"

loginButton.layer.masksToBounds = true
loginButton.layer.cornerRadius = 5
loginButton.layer.borderWidth = 2.0
loginButton.imageView?.contentMode = UIViewContentMode.scaleToFill
loginButton.layer.borderColor = UIColor.lightGray.cgColor
loginButton.layer.backgroundColor = backgroundColorrr.cgColor
loginButton.titleLabel?.textColor = UIColor.white
loginButton.titleLabel?.text = "Login"

userNameTextField.layer.masksToBounds = true
userNameTextField.layer.cornerRadius = 15.0
userNameTextField.layer.backgroundColor = backgroundColorrr.cgColor
userNameTextField.layer.borderWidth = 0.5

注意:如果您应用cornerRadius,则可以在clipsToBounds = true上获得相同的结果。