SwiftDeveloper
SwiftDeveloper

Reputation: 7368

How set swift 3 UITextField border color?

Hello i have working no error codes for UITextfield border color change but when using it in Swift 3 dont change textfield border color and dont gives error. I need your help my codes under below.

@IBOutlet weak var email: UITextField!
@IBOutlet weak var pass: UITextField!


override func viewDidLoad() {
    super.viewDidLoad()

    let myColor : UIColor = UIColor.white()
    email.layer.borderColor = myColor.cgColor
    pass.layer.borderColor = myColor.cgColor


}

Thank you !

Upvotes: 62

Views: 108662

Answers (7)

meow2x
meow2x

Reputation: 2124

You need to set the borderWidth from the UITextField's layer property.

Like: email.layer.borderWidth = 1.

Also, if you frequently need to set borders to your views, you can make an extension like this:

extension UIView {
    func addBorderAndColor(color: UIColor, width: CGFloat, corner_radius: CGFloat = 0, clipsToBounds: Bool = false) {
        self.layer.borderWidth = width
        self.layer.borderColor = color.cgColor
        self.layer.cornerRadius = corner_radius
        self.clipsToBounds = clipsToBounds
    }
}

Call this like: email.addBorderAndColor(color: UIColor.white, width: 0.5, corner_radius: 5, clipsToBounds: true)

Since this method sets the borderWidth, it will also solve your problem.

Upvotes: 6

user11803319
user11803319

Reputation:

It is working.

  1. give border width
  2. and after give bgcolor.
txtemail.layer.borderWidth = 1.0
txtemail.layer.borderColor = UIColor.blue.cgColor

It definitely works

Upvotes: 1

Nimisha joshy
Nimisha joshy

Reputation: 336

Use the below code in swift 3:

in view did load

 outer_line.layer.borderWidth = 1
 outer_line.layer.borderColor = UIColor.lightGray.cgColor

Upvotes: 12

Kiran Jadhav
Kiran Jadhav

Reputation: 3327

Updated Swift 3 :

if you want to set the bottom border to UITextField, used below lines of code :

// function defination :

func setBottomBorderToTextFields()  {

    let bottomLine = CALayer()
    bottomLine.frame = CGRect(x: 0, y: yourTextFieldName.frame.height - 1, width: yourTextFieldName.frame.width, height: 1)
    bottomLine.backgroundColor = UIColor.gray.cgColor // background color
    yourTextFieldName.borderStyle = UITextBorderStyle.none // border style
    yourTextFieldName.layer.addSublayer(bottomLine)
}

// In ViewDidLoad() :

self.setBottomBorderToTextFields()

Upvotes: 6

Ketan Parmar
Ketan Parmar

Reputation: 27448

You also need to set border width, because your border color is set already but your default border width is 0.0 so you can't see it.

So, set border width something like,

  email.layer.borderWidth = 1.0

Update :

Your code should be like,

 @IBOutlet weak var email: UITextField!
 @IBOutlet weak var pass: UITextField!

 override func viewDidLoad() {
   super.viewDidLoad()

   let myColor = UIColor.white
   email.layer.borderColor = myColor.cgColor
   pass.layer.borderColor = myColor.cgColor

   email.layer.borderWidth = 1.0
   pass.layer.borderWidth = 1.0

}

Upvotes: 134

kamwysoc
kamwysoc

Reputation: 6859

I think you should first provide a borderWidth

@IBOutlet weak var email: UITextField!
@IBOutlet weak var pass: UITextField!


override func viewDidLoad() {
super.viewDidLoad()

let myColor : UIColor = UIColor.white()
email.layer.borderWidth = 1
email.layer.borderColor = myColor.cgColor
pass.layer.borderColor = myColor.cgColor


}

and then set a color :)

Upvotes: 10

Ashish Thakkar
Ashish Thakkar

Reputation: 944

Try to use this, It might be helpful to you

let myColor : UIColor = UIColor( red: 0.5, green: 0.5, blue:0, alpha: 1.0 )
myTextField.layer.masksToBounds = true
myTextField.layer.borderColor = myColor.CGColor
myTextField.layer.borderWidth = 2.0

Upvotes: 10

Related Questions