I 7.0に最近更新Xcodeと私は、この警告メッセージが出ます:NSObject.BroadSystemFontWeights警告メッセージは何を意味しますか?
Xcode.IDEInterfaceBuilder.Cocoa.NSObject.BroadSystemFontWeights
何をそれは意味し、どのように私はそれを取り除くのですか?
I 7.0に最近更新Xcodeと私は、この警告メッセージが出ます:NSObject.BroadSystemFontWeights警告メッセージは何を意味しますか?
Xcode.IDEInterfaceBuilder.Cocoa.NSObject.BroadSystemFontWeights
何をそれは意味し、どのように私はそれを取り除くのですか?
システムフォントのラベルにフォントウェイトSemibold
を設定すると、同じエラーが表示されます。この重量は新しいシステムフォント(サンフランシスコ)では利用可能ですが、古いHelvetica Neueでは使用できませんので、そのエラーは古いOSで適切な重みを得ることができないことを意味します。
私の場合、Helvetica Neue、Bold
のフォントをウェイトに変更すると、エラーが修正されました。
問題はシステムフォントの重量を変更することではなく、問題はXcodeがこの矛盾する文を正しく処理しないことです。詳細はfull blog postを参照してください。 3つのシナリオがあります。
最初の明示的なタイポグラフィは重要ではありません。通常の体重でも構いません。その後、マルコの答えに固執し、明確な標準的な体重を使用します。
第2明示的なタイポグラフィが推奨されますが、古いシステムでは危険にさらされる可能性があります。これはデフォルトの動作で、Xcodeは単に警告を表示し、10.11より前のターゲットで通常のフォントを使用します。適応型レイアウトを使用する場合は、すべてが正常であるはずです。警告を取り除くために、あなたは、単にストーリーボードインスペクタに高い目標を設定することができます。
注意をストーリーボードには、以前のターゲットのためのフォールバック機能を使用している場合、彼らは問題を引き起こすであろう、無効になる可能性があります - 私の避難所これまで何にも出会っていない。
第三者の明示的なタイポグラフィは必須です。この場合、カスタムの検査可能なプロパティを持つカスタムテキストフィールドを使用できます。アイデンティティインスペクタを開き、カスタムクラスを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
}
}
}
P.S.大胆な太さは、多少異なるロジックを使用している可能性が高いため、おそらくOS X 10.0以来利用可能なboldSystemFontOfSize(_:)があり、ストーリーボードが依存する可能性がある他の多くの方法とは異なります。
font-weightを両方のフォントファミリで使用可能な「Medium」に設定すると、エラーは解決されません。 – Henrik