我们在我们的项目中使用自定义字体.它在Xcode5中工作得很好.在Xcode6中,它可以在纯文本、代码中的属性字符串中工作.但是,当在模拟器或设备上运行时,在故事板中设置的那些属性字符串都会恢复为Helvetica,尽管它们在故事板中看起来没有问题.
我不确定这是不是Xcode 6或iOS 8 SDK的错误,还是在Xcode 6/iOS 8中更改了使用自定义字体的方式?
我们在我们的项目中使用自定义字体.它在Xcode5中工作得很好.在Xcode6中,它可以在纯文本、代码中的属性字符串中工作.但是,当在模拟器或设备上运行时,在故事板中设置的那些属性字符串都会恢复为Helvetica,尽管它们在故事板中看起来没有问题.
我不确定这是不是Xcode 6或iOS 8 SDK的错误,还是在Xcode 6/iOS 8中更改了使用自定义字体的方式?
我的解决办法是使用IBDesignable
类:
import UIKit
@IBDesignable class TIFAttributedLabel: UILabel {
@IBInspectable var fontSize: CGFloat = 13.0
@IBInspectable var fontFamily: String = "DIN Light"
override func awakeFromNib() {
var attrString = NSMutableAttributedString(attributedString: self.attributedText)
attrString.addAttribute(NSFontAttributeName, value: UIFont(name: self.fontFamily, size: self.fontSize)!, range: NSMakeRange(0, attrString.length))
self.attributedText = attrString
}
}
在界面生成器中提供以下内容:
您可以像平常一样设置属性字符串,但是您必须在新的可用属性中再次设置您的FontSize和FontFamily.
因为界面生成器在默认情况下使用自定义字体,所以结果是what you see is what you get,这是我在构建应用程序时更喜欢的.
Note
我之所以使用它而不仅仅是普通版本,是因为我在属性标签上设置了像行距这样的属性,这些属性在使用普通样式时是不可用的.