Подтвердить что ты не робот

NSForegroundColorAttributeName не работает в Swift?

В viewDidLoad у меня есть что-то вроде следующего, чтобы добавить текстовые атрибуты в UITextField:

let textAttributes = [
    NSForegroundColorAttributeName: UIColor.whiteColor(),
    NSStrokeColorAttributeName: UIColor.blackColor(),
    NSFontAttributeName: UIFont(name: "HelveticaNeue-CondensedBlack", size: 40)!,
    NSStrokeWidthAttributeName: 1.0
]

self.textField.delegate = self
self.textField.defaultTextAttributes = textAttributes
self.textField.text = "Top text field"

Все эти атрибуты работают правильно, кроме NSForegroundColorAttributeName. Этот текст выглядит прозрачным. Это ошибка Swift?

Текст помещается над изображением в UIScrollView. Текст по мере его появления:

Screen Shot

4b9b3361

Ответ 1

От Технический Q & A QA1531:

Это связано с тем, что знак значения для NSStrokeWidthAttributeName интерпретируется как режим; он указывает, относится ли связанная строка должно быть заполнено, поглажено или и то, и другое. В частности, отображается нулевое значение только заполнение, в то время как положительное значение отображает только штрих. Отрицательный значение позволяет отображать как заливку, так и ход.

Итак, с вашей настройкой

NSStrokeWidthAttributeName: 1.0

шрифт только поглаживается и не заполняется, в результате получается "контурный шрифт". Вы хотите установить

NSStrokeWidthAttributeName: -1.0

чтобы шрифт был поглажен и заполнен.

Вы также можете найти эту информацию, если вы нажмете команду NSStrokeWidthAttributeName в Xcode, чтобы перейти к определению:

NSNumber, содержащий значение с плавающей запятой, в процентах от точки шрифта размер, по умолчанию 0: без штриха; положительный только для инсульта, отрицательный для ход и заливка (типичное значение для выделенного текста будет 3,0)

Ответ 2

Вам нужно создать NSAttributedString с вашими текстовыми атрибутами, а затем установить свойство attributedText текстового поля:

textField.attributedText = NSAttributedString(string: "Top text field", attributes: textAttributes)