我在iOS 9中使用Swift。我想自定义UIAlertAction
的字体。我搜索了这些问题以获得Swift的答案:
Change the Font of UIAlertAction in Swift
Is it possible to customize the font and appearance of a UIAlertController in the new XCode w/ iOS8?
对于Objective-C答案的这个问题: UIAlertController custom font, size, color
但是没有自定义UIAlertAction
字体的解决方案。
我认为问题在于UIAlertAction
使用NSString
作为其title
属性。 See demo project on Github.
我想像这样创建一个字符串:
let originalString: String = "OK"
let myString: NSString = originalString as NSString
然后自定义字符串的字体&尺寸。然后,在将我的操作添加到警报控制器后,使用键值编码将字符串分配给我的操作:
alertController!.actions[0].setValue(myString, forKey: "title")
但据我所知,没有办法为NSString
设置自定义字体和大小。如果它使用UILabel
代替,则可以轻松自定义字体。但我似乎陷入了字符串的限制。有没有人知道如何分配自定义字体&大小到一个字符串,或者我认为没有办法做到这一点是正确的吗?
答案 0 :(得分:1)
您可以使用NSAttributedString
(或其可变副本NSMutableAttributedString
)来创建包含自定义信息的字符串。由于构造函数采用NSString
(或Swift中的String
),因此不会NSAttributedString
(NSAttributedString
不是NSString
的子类。) 。
你可以捏造Swift编译器使用NSAttributedString
传递unsafeBitCast
,但UIAlertAction
可能不喜欢它。
查看UIAlertController custom font, size, color,您似乎可以使用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")