添加边框到UITextField

时间:2016-04-10 15:34:15

标签: ios swift

我想为我的UITextField添加边框,就像这张图片

一样

enter image description here

所以我使用了这段代码

    let rectShape = CAShapeLayer()
    rectShape.bounds = self.userNameText.frame
    rectShape.position = self.userNameText.center


    rectShape.path = UIBezierPath(roundedRect: self.userNameText.bounds, byRoundingCorners: [ UIRectCorner.TopLeft , UIRectCorner.BottomRight ], cornerRadii: CGSize(width: 5.0 , height: 5.0)).CGPath

    self.userNameText.layer.backgroundColor = UIColor.redColor().CGColor
    //Here I'm masking the textView's layer with rectShape layer
    self.userNameText.layer.mask = rectShape

但结果是这样的

enter image description here

我错过了什么吗?

2 个答案:

答案 0 :(得分:3)

为文本字段添加边框,并根据需要设置其background

enter image description here

self.textField.borderStyle = .None
let path = UIBezierPath(roundedRect: self.textField.bounds, byRoundingCorners: [ UIRectCorner.TopLeft , UIRectCorner.BottomRight ], cornerRadii: CGSize(width: 8.0 , height: 8.0))
UIGraphicsBeginImageContextWithOptions(self.textField.bounds.size, false, 0)
path.stroke()
self.textField.background = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()

答案 1 :(得分:0)

尝试更改

中的代码
rectShape.path = UIBezierPath(roundedRect: self.userNameText.bounds, byRoundingCorners: [ UIRectCorner.TopLeft , UIRectCorner.BottomRight ], cornerRadii: CGSize(width: 5.0 , height: 5.0)).CGPath

rectShape.path = UIBezierPath(roundedRect: self.userNameText.bounds, byRoundingCorners: [ UIRectCorner.BottomRight ,  UIRectCorner.TopLeft  ], cornerRadii: CGSize(width: 5.0 , height: 5.0)).CGPath

并查看右下角是否正确,如左上角现在正好,如果左上角看起来像右下角那么现在。奇怪的是,除了左上角之外,所有角落都像这样四舍五入。

建议:试用textFieldEffects。这是一个非常酷的开源项目,允许您在故事板中创建现代的,视觉上吸引人的文本字段,而无需任何代码!我刚刚在我的应用程序中实现它,它看起来很棒!我唯一的抱怨是我无法使用didBeginEditing和didEndEditing函数(可能是我的问题)。