let titleAttributes: [String: Any] = [NSForegroundColorAttributeName: UIColor.white,
NSFontAttributeName: UIFont(name: "AvenirNext-Demi", size: CGFloat(14.0)) as Any]
let selectedTitleAttributes: [String: Any] = [NSForegroundColorAttributeName: UIColor.white,
NSFontAttributeName: UIFont(name: "AvenirNext-DemiBold", size: CGFloat(14.0)) as Any]
Прежде чем сказать, что это проблема UIControlState
, вам нужно сделать:
sortController.setTitleTextAttributes(selectedTitleAttributes, for: UIControlState.normal)
Другими словами, используйте тот же рабочий образец (тот, что для .selected
)
Это должно привести к той же ошибке сбоя.
Тогда вы обнаружите, что виновником является UIFont(name: "AvenirNext-Demi", size: CGFloat(14.0))
, он возвращает ноль.
Таким образом, имя шрифта неверно.
Вы можете перебрать свой шрифт, чтобы перечислить его ( см. Этот связанный вопрос ) и найти правильный.
Это «обычный», так что вы можете открыть Font Book.app , найти его и проверить имя сценария Post. Не все шрифты в macOS есть в iOS, но это так.
Вы получите: AvenirNext-Regular , AvenirNext-Medium , AvenirNext-UltraLight , AvenirNext-Italic , AvenirNext-MediumItalic , AvenirNext-UltraLightItalic , AvenirNext-DemiBold , AvenirNext-Bold , AvenirNext-Heavy , 1045 *, * AvenirNext-DemiBoldItalic , AvenirNext-BoldItalic , AvenirNext-HeavyItalic .
Нет AvenirNext-Demi .
Так что используйте тот, который, по вашему мнению, больше соответствует вашим потребностям.
Я рекомендую использовать пользовательский шрифт для установки их на Mac. Таким образом легко получить название постскриптумного шрифта.