Xcode IB 再次以不必要的警告让开发人员感到沮丧。
我也有同样的感觉,直到我看到我的排版在 10.10 与 10.11 中有何不同。有一件事是真实的 - 消息是垃圾,没有指向有问题的故事板项目,请参阅P.S section of the post 以获得半解决方法。
当前的答案几乎得到了它,但问题不在于旧目标中的字体样式不可用,而是 Xcode 没有正确处理它们,有关详细信息,请参阅full blog post。
如果您想保留您的样式,请使用具有自定义可检查属性的自定义文本字段。打开身份检查器并将自定义类设置为TextField,首选字体粗细属性将显示在属性检查器中,设置所需的值,构建并享受结果。
import AppKit
@IBDesignable public class TextField: NSTextField
{
@IBInspectable public var preferredFontWeight: Int = 0
override public func awakeFromNib() {
if #available(OSX 10.11, *) {
return
}
guard
let weight: Int = self.preferredFontWeight where weight > 0,
let font: NSFont = self.font,
let name: String = font.familyName,
let manager: NSFontManager = NSFontManager.sharedFontManager() else {
return
}
// Full details here – https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSFontManager_Class/#//apple_ref/occ/instm/NSFontManager/convertWeight:ofFont:
//
// 1 – ultralight
// 2 – thin
// 3 – light, extralight
// 4 – book
// 5 – regular, display
// 6 – medium
// 7 – demi, demibold
// 8 – semi, semibold
// 9 – bold
// 10 – extra, extrabold
// 11 – heavy
// 12 – black
// 13 – ultrablack
// 14 – extrablack
if let font: NSFont = manager.fontWithFamily(name, traits: manager.traitsOfFont(font), weight: weight, size: font.pointSize) {
self.font = font
}
}
}
如果您不关心样式,请对所有文本使用常规粗细字体,它应该可以解决问题,请参阅我之前的answer 以获取可用选项。