Я новичок в разработке iOS.
Я пытаюсь изменить заголовок и цвет сообщения UIAlertController, но не работает, цвет не меняется.
Вот мой код:
let alert = UIAlertController(title: NSLocalizedString("notifications_popup2_title", comment: ""), message: NSLocalizedString("notifications_popup2_message", comment: ""), preferredStyle: UIAlertControllerStyle.actionSheet)
// Change font of the title and message
let titleFont:[NSAttributedStringKey : AnyObject] = [ NSAttributedStringKey(rawValue: NSAttributedStringKey.font.rawValue) : UIFont(name: "Flama-Basic", size: 22)!, NSAttributedStringKey(rawValue: NSAttributedStringKey.foregroundColor.rawValue) : UIColor(hexString: "#2e2e2e")! ]
let messageFont:[NSAttributedStringKey : AnyObject] = [ NSAttributedStringKey(rawValue: NSAttributedStringKey.font.rawValue) : UIFont(name: "Flama-light", size: 18)!, NSAttributedStringKey(rawValue: NSAttributedStringKey.foregroundColor.rawValue) : UIColor(hexString: "#2e2e2e")! ]
let attributedTitle = NSMutableAttributedString(string: NSLocalizedString("notifications_popup2_title", comment: ""), attributes: titleFont)
let attributedMessage = NSMutableAttributedString(string: NSLocalizedString("notifications_popup2_message", comment: ""), attributes: messageFont)
alert.setValue(attributedTitle, forKey: "attributedTitle")
alert.setValue(attributedMessage, forKey: "attributedMessage")
Если я изменю стиль оповещения на .alert
, он работает …
Добро пожаловать в SO! Пожалуйста, объясните, что вы имеете в виду, но не работает. Также прочтите Как задать вопрос. — person noquart3r schedule 29.11.2019
Выкладываю скриншот. Я думаю не определяет цвет — person noquart3r schedule 29.11.2019
Заголовок / сообщение UIAlertController принимает строковое свойство, а не строку с атрибутами, поэтому я ожидал, что они не сработают. Я предполагаю, что это работает для предупреждения по причинам совместимости с устаревшими версиями. — person noquart3r schedule 29.11.2019
Не надо. Это использует частные свойства / библиотеки, это может измениться, как это было (например, между iOS 12 и iOS13), и поэтому больше не будет работать, и когда-нибудь может быть причиной Apple отклонить приложение. Вместо этого создайте свой собственный. — person noquart3r schedule 29.11.2019
Ср. stackoverflow.com/questions/58224830/ — person noquart3r schedule 29.11.2019
Некоторые из используемых вами кодов устарели, например:
сейчас:
также вам не нужно указывать
rawValue
. вам просто нужно что-то вроде:Результат:
Обратите внимание, что это работает только для
.alert
..actionSheet
заголовок и сообщение нельзя раскрашивать, в отличие от.alert
Также помните, что использование частного API может вызвать отказ. Но опыт показывает, что только частные методы, имена которых начинаются с символа «_», вызывают отказ от системы обнаружения использования частных методов в AppStore.
Также может перестать работать в любой момент, если Apple решит его изменить.
Наилучший вариант — создать собственное оповещение самостоятельно.
Вы абсолютно правы, @Sulthan. но опыт показывает, что только частные методы, имена которых начинаются с _, вызывают отказ от системы обнаружения использования частных методов AppStore. Я упомянул об этом в ответе. Спасибо — person noquart3r; 29.11.2019
Я не говорю об отказах, я говорю о том, что это требует предупреждения. Обычно безопаснее использовать настраиваемый контроллер предупреждений. — person noquart3r; 29.11.2019
Извините, я не понял этого. Вы как всегда правы. Я обновил ответ и упомянул обе проблемы. Еще раз спасибо @Sulthan — person noquart3r; 29.11.2019
Он только что изменился, к сведению в IOS13: stackoverflow.com/questions/58224830/ — person noquart3r; 29.11.2019