Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class TextFieldWTitle: UITextField {
- var titleText: String = "" {
- didSet {
- label.text = titleText
- }
- }
- var label = UILabel()
- override init(frame: CGRect) {
- super.init(frame: frame)
- self.genericConfigure()
- }
- init() {
- super.init(frame: CGRect.zero)
- self.genericConfigure()
- }
- required init?(coder: NSCoder) {
- super.init(coder: coder)
- self.genericConfigure()
- }
- func configure(text: String,
- placeholder: String = "") {
- self.text = text
- self.placeholder = placeholder
- if #available(iOS 13.0, *) {
- self.applyStyle13()
- } else {
- self.applyStylePre13()
- }
- }
- func genericConfigure() {
- self.borderStyle = .none
- self.layer.borderWidth = 1.0
- self.layer.masksToBounds = false // true
- self.layer.cornerRadius = 4.0
- self.textAlignment = .left
- label.text = "First name"
- label.translatesAutoresizingMaskIntoConstraints = false
- addSubview(label)
- NSLayoutConstraint.activate([
- label.leftAnchor.constraint(equalTo: leftAnchor),
- label.bottomAnchor.constraint(equalTo: topAnchor),
- label.heightAnchor.constraint(equalToConstant: 20.0)
- ])
- }
- @available(iOS 13.0, *)
- func applyStyle13() {
- self.tintColor = UIColor.label
- self.backgroundColor = UIColor.white
- self.textColor = UIColor.label
- self.attributedPlaceholder = NSAttributedString(
- string: self.placeholder ?? "",
- attributes: [NSAttributedString.Key.foregroundColor: UIColor.tertiaryLabel])
- }
- func applyStylePre13() {
- self.tintColor = .yellow
- self.backgroundColor = UIColor.white
- self.textColor = .yellow
- self.attributedPlaceholder = NSAttributedString(
- string: self.placeholder ?? "",
- attributes: [NSAttributedString.Key.foregroundColor: UIColor.yellow])
- }
- }
- class TitleFieldViewController : UIViewController {
- override func loadView() {
- let view = UIView()
- view.backgroundColor = .white
- let stack = UIStackView()
- //stack.frame = CGRect(x: 150, y: 200, width: 200, height: 200)
- stack.distribution = .fill
- stack.axis = .vertical
- let t1 = TextFieldWTitle()
- t1.configure(text: "texta", placeholder: "placeholder")
- let t2 = TextFieldWTitle()
- t2.configure(text: "textb", placeholder: "placeholder")
- t2.titleText = "Last name"
- stack.addArrangedSubview(t1)
- stack.addArrangedSubview(t2)
- view.addSubview(stack)
- stack.translatesAutoresizingMaskIntoConstraints = false
- NSLayoutConstraint.activate([
- stack.topAnchor.constraint(equalTo: view.topAnchor, constant: 100),
- stack.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 100),
- stack.widthAnchor.constraint(equalToConstant: 200),
- ])
- self.view = view
- // run first *without* spacing
- // then run *with* spacing
- //stack.spacing = 40
- }
- }
- // Present the view controller in the Live View window
- PlaygroundPage.current.liveView = TitleFieldViewController()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement