0

我在 iOS 9 中使用 Swift。我想为UIAlertAction. 我搜索了这些问题以寻找 Swift 的答案:

在 Swift 中更改 UIAlertAction 的字体

是否可以在带有 iOS8 的新 XCode 中自定义 UIAlertController 的字体和外观?

这个问题是一个 Objective-C 的答案: UIAlertController custom font, size, color

但是没有为UIAlertAction.

我认为问题在于 aUIAlertAction使用 anNSString作为其title属性。请参阅 Github 上的演示项目。

我想创建一个这样的字符串:

let originalString: String = "OK"
let myString: NSString = originalString as NSString

然后自定义字符串的字体和大小。然后将我的操作添加到警报控制器后,使用键值编码将字符串分配给我的操作:

alertController!.actions[0].setValue(myString, forKey: "title")

但据我所知,没有办法为NSString. 如果它使用 aUILabel代替,那么自定义字体将很容易。但我似乎被字符串的限制所困扰。有谁知道将自定义字体和大小分配给字符串的方法,还是我认为没有办法做到这一点是正确的?

4

1 回答 1

1

您将使用NSAttributedString(或其可变对应物,NSMutableAttributedString)来制作带有自定义信息的字符串。由于构造函数采用NSString(或String在 Swift 中),它不会采用NSAttributedString(NSAttributedString不是NSString.) 的子类。

您可以捏造 Swift 编译器来传递NSAttributedStringusing unsafeBitCast,但UIAlertAction可能不喜欢它。


查看UIAlertController 自定义字体、大小、颜色,似乎可以使用 KVO 进行设置。这样做的代码是类似的:

var alertVC = UIAlertController(title: "Dont care what goes here, since we're about to change below", message: "", preferredStyle: .ActionSheet)
let hogan = NSMutableAttributedString(string: "Presenting the great... Hulk Hogan!")
hogan.addAttribute(NSFontAttributeName, value: UIFont.systemFontOfSize(50), range: NSMakeRange(24, 11))

alertVC.setValue(hogan, forKey: "attributedTitle")
于 2015-11-04T22:57:54.710 回答