更改 UIAlertController 的标题字体大小
Change UIAlertController's title fontsize
我正在尝试更改 UIAlertController
中的标题 fontSize
,但我不知道如何将我的 NSMutableAttributedString
设置为 title
-属性.
所以我一直在使用以下代码创建 NSMutableAttributedString
:
let title = NSMutableAttributedString(string: user.fullName)
let range = NSRange(location: 0, length: title.length)
title.addAttribute(NSAttributedStringKey.font, value: UIFont.TextStyle.largeTitle, range: range)
现在对我来说棘手的部分是如何弄清楚如何将新标题设置为 UIAlertController
,因为它需要一个 String?
值。
我环顾四周,发现在呈现 UIAlertController
时,我可能应该在完成块中创建一个 UILabel
。但是如何用我自己的自定义 UILabel
覆盖 UIAlertController
中的 title
-属性?
present(myUIAlertController, animated: true) {
// Creating the UILabel depending on string length
// Set the NSMutableAttributedString value to the custom UILabel and override title property.
}
或者也许有更简单的方法来解决这个问题?
我的目标是像下图一样:
除了使用private API没有办法。
我可以建议您使用要自定义的属性制作 AlertViewController。
您可以使用此代码为 UIAlertController
的标题和消息添加属性。您可以根据需要进行自定义。您可以在图像中看到结果。我不确定你可以把它放在 Appstore 上。
func showAlert() {
let alert = UIAlertController(title: "", message: "", preferredStyle: .actionSheet)
let titleAttributes = [NSAttributedStringKey.font: UIFont(name: "HelveticaNeue-Bold", size: 25)!, NSAttributedStringKey.foregroundColor: UIColor.black]
let titleString = NSAttributedString(string: "Name Last name", attributes: titleAttributes)
let messageAttributes = [NSAttributedStringKey.font: UIFont(name: "Helvetica", size: 17)!, NSAttributedStringKey.foregroundColor: UIColor.red]
let messageString = NSAttributedString(string: "Company name", attributes: messageAttributes)
alert.setValue(titleString, forKey: "attributedTitle")
alert.setValue(messageString, forKey: "attributedMessage")
let labelAction = UIAlertAction(title: "Label", style: .default, handler: nil)
let deleteAction = UIAlertAction(title: "Delete", style: .destructive, handler: nil)
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
alert.addAction(labelAction)
alert.addAction(deleteAction)
alert.addAction(cancelAction)
self.navigationController?.present(alert, animated: true, completion: nil)
}
我正在尝试更改 UIAlertController
中的标题 fontSize
,但我不知道如何将我的 NSMutableAttributedString
设置为 title
-属性.
所以我一直在使用以下代码创建 NSMutableAttributedString
:
let title = NSMutableAttributedString(string: user.fullName)
let range = NSRange(location: 0, length: title.length)
title.addAttribute(NSAttributedStringKey.font, value: UIFont.TextStyle.largeTitle, range: range)
现在对我来说棘手的部分是如何弄清楚如何将新标题设置为 UIAlertController
,因为它需要一个 String?
值。
我环顾四周,发现在呈现 UIAlertController
时,我可能应该在完成块中创建一个 UILabel
。但是如何用我自己的自定义 UILabel
覆盖 UIAlertController
中的 title
-属性?
present(myUIAlertController, animated: true) {
// Creating the UILabel depending on string length
// Set the NSMutableAttributedString value to the custom UILabel and override title property.
}
或者也许有更简单的方法来解决这个问题?
我的目标是像下图一样:
除了使用private API没有办法。
我可以建议您使用要自定义的属性制作 AlertViewController。
您可以使用此代码为 UIAlertController
的标题和消息添加属性。您可以根据需要进行自定义。您可以在图像中看到结果。我不确定你可以把它放在 Appstore 上。
func showAlert() {
let alert = UIAlertController(title: "", message: "", preferredStyle: .actionSheet)
let titleAttributes = [NSAttributedStringKey.font: UIFont(name: "HelveticaNeue-Bold", size: 25)!, NSAttributedStringKey.foregroundColor: UIColor.black]
let titleString = NSAttributedString(string: "Name Last name", attributes: titleAttributes)
let messageAttributes = [NSAttributedStringKey.font: UIFont(name: "Helvetica", size: 17)!, NSAttributedStringKey.foregroundColor: UIColor.red]
let messageString = NSAttributedString(string: "Company name", attributes: messageAttributes)
alert.setValue(titleString, forKey: "attributedTitle")
alert.setValue(messageString, forKey: "attributedMessage")
let labelAction = UIAlertAction(title: "Label", style: .default, handler: nil)
let deleteAction = UIAlertAction(title: "Delete", style: .destructive, handler: nil)
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
alert.addAction(labelAction)
alert.addAction(deleteAction)
alert.addAction(cancelAction)
self.navigationController?.present(alert, animated: true, completion: nil)
}