我正在按照此答案来创建自定义UITextField,但是无法获得相同的结果,这是我的操作方法:
方法1(与原始答案完全一样):
extension UITextField {
func useUnderLine() {
let border = CALayer()
let borderWidth = CGFloat(1.0)
border.borderColor = UIColor.white.cgColor
border.frame = CGRect(x: 0, y: self.frame.size.height - borderWidth, width: self.frame.size.width, height: self.frame.size.height)
border.borderWidth = borderWidth
self.layer.addSublayer(border)
self.layer.masksToBounds = true
}
}
override func viewDidLoad() {
super.viewDidLoad()
firstTextField.useUnderLine()
}
Run Code Online (Sandbox Code Playgroud)
方法2(使用自定义类):
class CustomTextField: UITextField {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
let borderWidth = CGFloat(1.0)
self.layer.borderColor = UIColor.white.cgColor
self.layer.frame = CGRect(x: 0, y: self.frame.size.height - borderWidth, width: self.frame.size.width, height: self.frame.size.height)
self.layer.borderWidth = borderWidth
self.backgroundColor = UIColor.black
self.layer.masksToBounds = true
}
}
Run Code Online (Sandbox Code Playgroud)
两种方法都无法正常工作,但是,我得到了不同的结果:
第一个文本字段使用方法1,其他3个使用方法2
我想要一个只有底线的文本字段,我该怎么办?
编辑(以下是设置插座的方式):
@IBOutlet weak var firstTextField: UITextField!
@IBOutlet weak var secondTextField: CustomTextField! { didSet { secondTextField.delegate = self } }
@IBOutlet weak var thirdTextField: CustomTextField! { didSet { thirdTextField.delegate = self } }
@IBOutlet weak var fourthTextField: CustomTextField! { didSet { fourthTextField.delegate = self } }
Run Code Online (Sandbox Code Playgroud)
如果您使用情节提要板创建您的作品,请textField使用以下命令:
firstTextField.borderStyle = .none
firstTextField.layoutIfNeeded()
let border = CALayer()
let width = CGFloat(2.0)
border.borderColor = UIColor.darkGray.cgColor
print(firstTextField.frame)
border.frame = CGRect(x: 0, y: firstTextField.frame.size.height - width, width: firstTextField.frame.size.width, height: firstTextField.frame.size.height)
border.borderWidth = width
firstTextField.layer.addSublayer(border)
firstTextField.layer.masksToBounds = true
Run Code Online (Sandbox Code Playgroud)
如果您以textField 编程方式创建,请使用以下命令:
let textField = UITextField(frame: CGRect(x: 0, y: 20, width: 100, height: 20))
let border = CALayer()
let width = CGFloat(2.0)
border.borderColor = UIColor.darkGray.cgColor
border.frame = CGRect(x: 0, y: textField.frame.size.height - width, width: textField.frame.size.width, height: textField.frame.size.height)
border.borderWidth = width
textField.borderStyle = .none
textField.layer.addSublayer(border)
textField.layer.masksToBounds = true
self.view.addSubview(textField)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3676 次 |
| 最近记录: |