Заполнитель UITextField и Размер текста должны быть разделены - Swift - PullRequest
0 голосов
/ 29 января 2019

Мое требование таково, что когда заполнитель текстового поля виден, тогда его цвет должен быть серым и размер шрифта 10, но когда пользователь начинает вводить текстовое поле, его цвет должен быть черным, а размер шрифта 14. Я пробовал это:

textField.attributedPlaceholder = NSAttributedString(string: placeholderText,
                                                    attributes: [NSAttributedString.Key.foregroundColor: Color.iPhoneGrayColor, NSAttributedString.Key.font: UIFont(name: "SourceSansPro-Regular", size: 10)!])
    textField.textColor = UIColor.black
    textField.font = UIFont(name: "SourceSansPro-Regular", size: 14)!

Но размер шрифта моего заполнителя переопределяется на textfield.font, поэтому я не могу получить заполнитель размера 10. Где я ошибаюсь?Пробовал это пару часов сейчас.Любая помощь будет оценена.

Ответы [ 4 ]

0 голосов
/ 29 января 2019

Попробуйте этот код в вашем viewDidLoad() методе:

textField.attributedPlaceholder = NSAttributedString(string: placeholderText, attributes: [NSAttributedString.Key.foregroundColor: Color.iPhoneGrayColor, NSAttributedString.Key.font: UIFont(name: "SourceSansPro-Regular", size: 10)!])
    textField.textColor = UIColor.black
    textField.font = UIFont(name: "SourceSansPro-Regular", size: 14)!
0 голосов
/ 29 января 2019

Просто установите заполнитель после установки шрифта, поскольку установка шрифта также применяется к заполнителю (см. https://developer.apple.com/documentation/uikit/uitextfield/1619604-font):

textField.font = ...
textField.textColor = ...

textField.attributedPlaceholder = ...
0 голосов
/ 29 января 2019

Просто попробуйте этот код, может помочь вам в дальнейшем:

    var myMutableStringTitle = NSMutableAttributedString()
    let Name  = "Enter Title" // PlaceHolderText

    myMutableStringTitle = NSMutableAttributedString(string:Name, attributes: [NSFontAttributeName:UIFont(name: "Georgia", size: 20.0)!]) // Font
    myMutableStringTitle.addAttribute(NSForegroundColorAttributeName, value: UIColor.redColor(), range:NSRange(location:0,length:Name.characters.count))    // Color
    txtTitle.attributedPlaceholder = myMutableStringTitle
0 голосов
/ 29 января 2019

Просто попробуйте этот код, возьмите розетку действия UITextFieldEditingChanged и используйте, как показано ниже.

@IBAction func nameTextFieldEditingChanged(_ sender: UITextField) {
        if sender.text?.isEmpty ?? true {
            //placeholder text size set here
            textField.font = UIFont(name: "SourceSansPro-Regular", size: 10)!
        } else {
            // When user starting typing
            textField.textColor = UIColor.black
            textField.font = UIFont(name: "SourceSansPro-Regular", size: 14)!
        }
    }

Если есть сомнения, прокомментируйте].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...