在 swift 4 中使用 textField 和标签自定义控件
CustomControl with textField and label in swfit 4
我正在尝试创建一个 @IDesignable
自定义控件,其中包含 UITextField
和 UILabel
。
我创建了 UIView
和 UITextFieldDelegate
的子 class。在此 class 方法 awakeFromNib()
中,我创建了 textField
并将其添加到 View
和 addSubview()
。我在故事板上的主要 ViewController
添加了一个视图控件并将其 class 设置为我的新 class。但什么也没有发生。我没有看到文本字段。这是我的代码:
@IBDesignable class CTextField: UIView, UITextFieldDelegate {
var textField: UITextField?
var label: UILabel?
@IBInspectable var placeHolderText: String = "" {
didSet {
textField?.placeholder = placeHolderText
}
}
override func awakeFromNib() {
textField = UITextField(frame: CGRect(x: 20, y: 100, width: 300, height: 40))
textField?.placeholder = placeHolderText
self.addSubview(textField!)
}}
我应该在哪里创建文本字段?在我的 class CTextField 中使用哪种方法?我应该重写 draw 方法吗?
你接下来应该做的:
- 在视图控制器中创建
@IBOutlet weak var customTextFieldView: CTextField!
- 在
storyboard
中连接 customTextFieldView
- 为您的视图设置正确的约束:
- 在情节提要
中设置 placeHolderText
最后像这样更新您的 class:
@IBInspectable var placeHolderText: String = "" {
didSet {
textField?.placeholder = placeHolderText
updateView()
}
}
override func awakeFromNib() {
super.awakeFromNib()
}
func updateView() {
subviews.forEach { [=10=].removeFromSuperview() }
textField = UITextField(frame: CGRect(x: 0, y: 0, width: 300, height: 40))
textField?.backgroundColor = .red
textField?.placeholder = placeHolderText
self.addSubview(textField!)
}
我正在尝试创建一个 @IDesignable
自定义控件,其中包含 UITextField
和 UILabel
。
我创建了 UIView
和 UITextFieldDelegate
的子 class。在此 class 方法 awakeFromNib()
中,我创建了 textField
并将其添加到 View
和 addSubview()
。我在故事板上的主要 ViewController
添加了一个视图控件并将其 class 设置为我的新 class。但什么也没有发生。我没有看到文本字段。这是我的代码:
@IBDesignable class CTextField: UIView, UITextFieldDelegate {
var textField: UITextField?
var label: UILabel?
@IBInspectable var placeHolderText: String = "" {
didSet {
textField?.placeholder = placeHolderText
}
}
override func awakeFromNib() {
textField = UITextField(frame: CGRect(x: 20, y: 100, width: 300, height: 40))
textField?.placeholder = placeHolderText
self.addSubview(textField!)
}}
我应该在哪里创建文本字段?在我的 class CTextField 中使用哪种方法?我应该重写 draw 方法吗?
你接下来应该做的:
- 在视图控制器中创建
@IBOutlet weak var customTextFieldView: CTextField!
- 在
storyboard
中连接
customTextFieldView
- 在情节提要 中设置
placeHolderText
最后像这样更新您的 class:
@IBInspectable var placeHolderText: String = "" {
didSet {
textField?.placeholder = placeHolderText
updateView()
}
}
override func awakeFromNib() {
super.awakeFromNib()
}
func updateView() {
subviews.forEach { [=10=].removeFromSuperview() }
textField = UITextField(frame: CGRect(x: 0, y: 0, width: 300, height: 40))
textField?.backgroundColor = .red
textField?.placeholder = placeHolderText
self.addSubview(textField!)
}