我为此做了自定义类。你可以使用下面的代码,任何可以改变的故事板,只要你想和角落的半径你想要的。
import UIKit
@IBDesignable
class CustomRoundedTextField: UITextField {
@IBInspectable var lColor: UIColor = UIColor(red: (37.0/255.0), green: (252.0/255), blue: (244.0/255.0), alpha: 1.0)
@IBInspectable var lWidth: CGFloat = 1
@IBInspectable var lCornerRadius: CGFloat = 8
@IBInspectable var sColor:UIColor = UIColor(red: (37.0/255.0), green: (252.0/255), blue: (244.0/255.0), alpha: 1.0)
@IBInspectable var TLRCorner:Bool = false
@IBInspectable var TRRCorner:Bool = false
@IBInspectable var BLRCorner:Bool = false
@IBInspectable var BRRCorner:Bool = false
@IBInspectable var XInset:CGFloat = 10
@IBInspectable var YInset:CGFloat = 10
required internal init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override init(frame: CGRect) {
super.init(frame: frame)
}
override internal func drawRect(rect: CGRect) {
addBorderFieldRect()
}
override func textRectForBounds(bounds: CGRect) -> CGRect {
return CGRectInset(bounds, XInset, 0)
}
override func editingRectForBounds(bounds: CGRect) -> CGRect {
return CGRectInset(bounds, YInset, 0)
}
func addBorderFieldRect() {
let rectanglePath = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: [
TLRCorner ? .TopLeft : [],
TRRCorner ? .TopRight : [],
BLRCorner ? .BottomLeft : [],
BRRCorner ? .BottomRight : []
], cornerRadii: CGSizeMake(lCornerRadius, lCornerRadius))
rectanglePath.closePath()
self.lColor.setFill()
rectanglePath.fill()
self.sColor.setStroke()
rectanglePath.lineWidth = lWidth
rectanglePath.stroke()
}
}
你为什么不使用layer.corner.raius来去做? – SeanChense
你从哪里调用这个方法? – alexburtnik
@alexburtnik - (void)viewDidLayoutSubviews { [self initUIfeatures]; } - (无效)initUIfeatures { [authTextField setMaskByRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight | UIRectCornerBottomLeft)withCornerRadius:8.0f]; } – Viktorianec