是否可以为NSString设置自定义字体和大小?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以为NSString设置自定义字体和大小?相关的知识,希望对你有一定的参考价值。
我在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
代替,那么很容易定制字体。但我似乎陷入了字符串的限制。有没有人知道为字符串分配自定义字体和大小的方法,或者我相信没有办法做到这一点?
你可以使用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")
以上是关于是否可以为NSString设置自定义字体和大小?的主要内容,如果未能解决你的问题,请参考以下文章
使用自定义字体在 CGContextRef 和 PDF 中打印 NSString
Android开发 如何重写SimpleAdapter,自定义字体的大小?
如何在iOS中将具有特定大小的自定义字体设置为Web View?
sizeWithFont:constrainedToSize 不适用于自定义字体