ohh*_*hho 15 iphone uilabel uifont ios
我想使用自定义字体UILabel.自定义字体由文件加载:
NSString *fontPath = ... ; // a TTF file in iPhone Documents folder
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithFilename([fontPath UTF8String]);
CGFontRef customFont = CGFontCreateWithDataProvider(fontDataProvider);
CGDataProviderRelease(fontDataProvider);
Run Code Online (Sandbox Code Playgroud)
我怎样才能转换CGFontRef为UIFont以中使用[UILabel setFont:]?
Jos*_*own 16
康拉德的答案很接近但不太有效.您需要为UIFont提供PostScript名称,而不是全名.
NSString *fontName = (NSString *)CGFontCopyPostScriptName(fontRef);
UIFont *font = [UIFont fontWithName:fontName size:someSize]
Run Code Online (Sandbox Code Playgroud)
小智 15
你不能直接转换CGFontRef,UIFont但你可以注册CGFontRef使用CTFontManagerRegisterGraphicsFont,然后创建相应的UIFont.
NSString* fpath = [documentsDirectory stringByAppendingPathComponent:@"custom_font_file_name.ttf"];
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithFilename([fpath UTF8String]);
CGFontRef customFont = CGFontCreateWithDataProvider(fontDataProvider);
CGDataProviderRelease(fontDataProvider);
NSString *fontName = (__bridge NSString *)CGFontCopyFullName(customFont);
CFErrorRef error;
CTFontManagerRegisterGraphicsFont(customFont, &error);
CGFontRelease(customFont);
UIFont* uifont = [UIFont fontWithName:fontName size:12];
Run Code Online (Sandbox Code Playgroud)
CTFontRef并且UIFont是免费桥接的,所以你可以把你的CGFont变成 aCTFont然后把它变成 a UIFont:
CTFontRef ctFont = CTFontCreateWithGraphicsFont(cgFont, pointSize, NULL, NULL);
UIFont *uiFont = CFBridgingRelease(ctFont);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7888 次 |
| 最近记录: |