Граница UITextField указывает радиус в Swift - PullRequest
0 голосов
/ 25 октября 2019

По какой-то причине мой радиус угла, который я хочу указать 30, не будет отображаться в моей основной плате для Xcode кодирования в Swift.

Текстовое поле появится, если я использую passWordTextField.borderStyle = UITextField.BorderStyle.roundedRect (это не позволит мне указать значение угла radius/borderstyle), но не будет, если я использую passWordTextField.borderStyle = UITextField.BorderStyle.init(rawValue: 30)!.

func customTextField (xco: CGFloat, yco: CGFloat, widthLength: CGFloat, heightLength: CGFloat, printSize: CGFloat) {

    let passWordTextField =  UITextField(frame: CGRect(x: xco, y: yco, width: widthLength, height: heightLength ))
    let fontSize = CGFloat (printSize)
    passWordTextField.placeholder = "Enter text here" //set placeholder text
    passWordTextField.font = UIFont.systemFont(ofSize: fontSize) // set font size of text field

    //passWordTextField.borderStyle = UITextField.BorderStyle.init(rawValue: 30)!
    passWordTextField.layer.cornerRadius = 30.0
   // passWordTextField.borderStyle = UITextField.BorderStyle.roundedRect
    passWordTextField.autocorrectionType = UITextAutocorrectionType.no
    passWordTextField.keyboardType = UIKeyboardType.default
    passWordTextField.returnKeyType = UIReturnKeyType.done
    passWordTextField.clearButtonMode = UITextField.ViewMode.whileEditing
    passWordTextField.contentVerticalAlignment = UIControl.ContentVerticalAlignment.center
    passWordTextField.delegate = self as? UITextFieldDelegate
    self.view.addSubview(passWordTextField)

Ответы [ 2 ]

1 голос
/ 25 октября 2019

Если вы хотите также увидеть свои изменения на раскадровке, вы можете использовать собственный класс текстового поля.

public class CustomTextField: UITextField {
    public override init(frame: CGRect) {
      super.init(frame: frame)
      prepare()
    }

    required init?(coder decoder: NSCoder) {
      super.init(coder: decoder)
      prepare()

    private func prepare() {
       layer.cornerRadius = 30
    }
}

Теперь на вашей раскадровке вы можете изменить класс вашего текстового поля в инспекторе удостоверений. в ваш CustomTextField.

0 голосов
/ 25 октября 2019

Вам необходимо установить @IBDesignable и prepareForInterfaceBuilder() для отображения вашего textField в Интерфейсном Разработчике. Вот шаги: 1. сделать подкласс UITextField, как показано ниже

import UIKit
@IBDesignable
class CostumTxtField: UITextField {
    override func prepareForInterfaceBuilder() {
        makeCorenerRadius()
    }
    override func awakeFromNib() {
        super.awakeFromNib()
        makeCorenerRadius()

    }


 override init(frame: CGRect) {
      super.init(frame: frame)

    autocorrectionType = .no
    keyboardType = .default
    returnKeyType = .done
    clearButtonMode = .whileEditing
    contentVerticalAlignment = .center
    makeCorenerRadius()

    }

    required init?(coder decoder: NSCoder) {
      super.init(coder: decoder)

    func makeCorenerRadius(){
        backgroundColor = .white
        layer.cornerRadius = 20

}
}

В вашем контроллере представления отредактируйте вашу функцию следующим образом:
func customTextField (xco: CGFloat, yco: CGFloat, widthLength: CGFloat, heightLength: CGFloat, fontSize: CGFloat) {

    let passWordTextField =  UITextField(frame: CGRect(x: xco, y: yco, width: widthLength, height: heightLength )) {

    passWordTextField.placeholder = "Enter text here" //set placeholder text
    passWordTextField.font = UIFont.systemFont(ofSize: fontSize) // set font size of text field

    passWordTextField.delegate = self as? UITextFieldDelegate
    self.view.addSubview(passWordTextField)
}
...