2016-01-04 10 views
5

これは簡単に行うべきですが、何らかの理由で機能しないようです。私はそれほど類似の記事を読んだことがあり、Font Traits辞書に問題があるようです。これは問題なのでしょうか、まったく何か不足していますか?これは初めてのことで、このようなフォントでうんざりしているので、後者かもしれないと思います。iOS Swiftはフォント記述子にカスタムウェイトを追加します

私は、定数を使用したり、フォントを "-old"にすることは望ましくありません。私はフォントの重量を細かく制御したいと思っています。

let traits = [UIFontWeightTrait : 1.0] 
    imgFontDescriptor = UIFontDescriptor(fontAttributes: [UIFontDescriptorNameAttribute: "Helvetica"]) 
    imgFontDescriptor = imgFontDescriptor.fontDescriptorByAddingAttributes([UIFontDescriptorTraitsAttribute:traits]) 
    imgTextFont = UIFont(descriptor: imgFontDescriptor!, size: 24.0) 

研究:

Font Descriptor returns nil in iOS 8

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIFontDescriptor_Class/#//apple_ref/doc/constant_group/Font_Traits_Dictionary_Keys

数の値を使用してiOSのドキュメントによると、(私はiOSの9.2を実行している)動作するはずです:

UIFontWeightTrait 標準化されたwe NSNumberオブジェクトとしてのight値。有効な値の範囲は-1.0〜1.0です。 0.0の値は、標準または中程度のフォントの重みに対応します。フォントウェイト定数を使用して特定のウェイトを指定することもできます。使用できる定数の一覧は、「フォントの太さ」を参照してください。 iOS 7.0以降でご利用いただけます。

答えて

8

UIFont(descriptor: imgFontDescriptor!, size: 24.0)は、どのような記述子と一致するかをFontに返します。説明と一致するフォントが見つからない場合は、デフォルトのフォントが返されます。したがって、体重を手動でコントロールすることはできません。それは使用するフォントに依存します。 Fontがそのウェイトをサポートしている場合は、それが返されます。

もう1つは、[UIFontDescriptorFamilyAttribute: "Helvetica"]です。それで、あなたのFontWeightをFamilyName &のFontName基底を決定します。

public let UIFontWeightUltraLight: CGFloat 
@available(iOS 8.2, *) 
public let UIFontWeightThin: CGFloat 
@available(iOS 8.2, *) 
public let UIFontWeightLight: CGFloat 
@available(iOS 8.2, *) 
public let UIFontWeightRegular: CGFloat 
@available(iOS 8.2, *) 
public let UIFontWeightMedium: CGFloat 
@available(iOS 8.2, *) 
public let UIFontWeightSemibold: CGFloat 
@available(iOS 8.2, *) 
public let UIFontWeightBold: CGFloat 
@available(iOS 8.2, *) 
public let UIFontWeightHeavy: CGFloat 
@available(iOS 8.2, *) 
public let UIFontWeightBlack: CGFloat*/ 

あなたは家族の名前がサポートされていることをどのフォントの太さを決定するためにhttp://iosfonts.com/を使用する必要があります。

正しい方法は、AppleのLIBから定数を使用しています。ヘルベチカの場合

let traits = [UIFontWeightTrait : UIFontWeightLight] // UIFontWeightBold/UIFontWeightRegular 
var imgFontDescriptor = UIFontDescriptor(fontAttributes: [UIFontDescriptorFamilyAttribute: "Helvetica"]) 
imgFontDescriptor = imgFontDescriptor.fontDescriptorByAddingAttributes([UIFontDescriptorTraitsAttribute:traits]) 
+0

ああ!今、私は分かる。ドキュメントを読むとき、私は、フォントウェイトを細かく制御したり、定数を使うことができると信じられていました。私はまだフォントの太さの実際の数値を指定することができますが、フォントに対応する値がない場合はデフォルトを提供します。また、ウェブサイトのおかげで。これは役に立ちます! – enigmasck

関連する問題