iphone - style - uitableviewcell dynamic type




UIFontインスタンスのフォントサイズまたは太字バージョンを取得する方法 (5)

どのようにUIFontインスタンスのフォントサイズを取得するには?

あるいは、誰かがこのメソッドをUIFontに実装できるのであれば?

- (UIFont *)boldFont;

UIFontDescriptorはかなり強力なクラスであり、あなたが望むフォントの大胆なバージョンを取得するために使うことができます。 パブリックAPIの使用のみが必要であり、文字列の変更に依存しないため、完全に安全で将来の証明が必要です。

Swift 3のコードは次のとおりです。

extension UIFont {

    func bold() -> UIFont? {
         let fontDescriptorSymbolicTraits: UIFontDescriptorSymbolicTraits = [fontDescriptor.symbolicTraits, .traitBold]
         let bondFontDescriptor = fontDescriptor.withSymbolicTraits(fontDescriptorSymbolicTraits)
         return bondFontDescriptor.flatMap { UIFont(descriptor: $0, size: pointSize) }
    }

}

objective-cのコードは次のとおりです。

@implementation UIFont (RABoldFont)

- (UIFont *)ra_boldFont
{
    UIFontDescriptor *fontDescriptor = [self fontDescriptor];
    UIFontDescriptorSymbolicTraits traits = fontDescriptor.symbolicTraits;
    traits = traits | UIFontDescriptorTraitBold;
    UIFontDescriptor *boldFontDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:traits];
    return [UIFont fontWithDescriptor:boldFontDescriptor size:self.pointSize];
}

@end

これは古い答えで、もはや最善の解決策ではなく、受け入れられた答えを見てください。

-(UIFont *)boldFont{

//First get the name of the font (unnecessary, but used for clarity)
NSString *fontName = self.fontName;

//Some fonts having -Regular on their names. so we have to remove that before append -Bold / -BoldMT
fontName = [[fontName componentsSeparatedByString:@"-"] firstObject];

//Then append "-Bold" to it.
NSString *boldFontName = [fontName stringByAppendingString:@"-Bold"];

//Then see if it returns a valid font
UIFont *boldFont = [UIFont fontWithName:boldFontName size:self.pointSize];

//If it's valid, return it
if(boldFont) return boldFont;

//Seems like in some cases, you have to append "-BoldMT"
boldFontName = [fontName stringByAppendingString:@"-BoldMT"];
boldFont = [UIFont fontWithName:boldFontName size:self.pointSize];

//Here you can check if it was successful, if it wasn't, then you can throw an exception or something.
return boldFont;

}

あなたのUIFontインスタンスからフォントサイズにアクセスするには

 @property(nonatomic, readonly) CGFloat pointSize

フォントサイズを教えてくれる多くのプロパティがあります(帽子、小さなものなど...)

capHeight,xHeight,pointSize 

下の太字のフォントにアクセスする

UIFont* myboldFont = [UIFont boldSystemFontOfSize:11];

ここでは、フォントサイズを見つける最も簡単な方法です

UIFont *anyFont;
//initialization and other stuff here

今すぐあなたはそのサイズを見たいと思っています

 CGFloat fontSize= [anyFont pointSize];

特定のフォントの文字列のサイズを測定するには、 NSString+UIKitメソッドを使用します。

iPhoneは、同じ名前の普通のフォントと大胆なフォントを完全に別々のフォントとして扱います。そのため、単純な変換方法はありません。 たとえば、ArialMTとArial-BoldMTは、OSによって完全に異なるフォントとみなされます。

編集:私はあなたの質問を誤解している可能性があります。 おそらくあなたはUIFontのpointSizeプロパティを探していますか?





uifont