我正在尝试将外部.ttf字体加载到我的一个iOS项目中。该字体在模拟器中工作正常,但无法在实际设备上显示。
我正在使用LLVM GCC 4.2编译器。在另一个使用Apple LLVM编译器3.0的项目中,相同的字体可以使用。我不明白我怎么解决它?使用LLVM GCC 4.2编译器需要遵循哪些步骤?
答案 0 :(得分:8)
确保将其添加到“目标”下 - > '构建阶段' - > '复制捆绑资源'。我遇到了类似的问题,并通过手动将其添加到此列表中,字体开始显示在设备上。
答案 1 :(得分:3)
对于代码帮助下的自定义字体
UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(10, 30, 240, 40)];
[label1 setFont: [UIFont fontWithName: @"Grinched" size:24]];
[label1 setText:@"Grinched Font"];
[[self view] addSubview:label1];
UILabel *label2 = [[UILabel alloc] initWithFrame:CGRectMake(10, 80, 240, 40)];
[label2 setFont: [UIFont fontWithName: @"Energon" size:18]];
[label2 setText:@"Energon Font"];
[[self view] addSubview:label2];
您也可以下载示例代码和教程here.
答案 2 :(得分:2)
您对字体的选择有限,因此您必须在可用字体之间进行选择......
这个答案可作为参考: What fonts do iPhone applications support?
答案 3 :(得分:1)
首先加载如下字体:
(void)loadFont{ // Get the path to our custom font and create a data provider.
NSString *fontPath = [[NSBundle mainBundle] pathForResource:@"mycustomfont" ofType:@"ttf"];
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithFilename([fontPath UTF8String]);
// Create the font with the data provider, then release the data provider. customFont =
CGFontCreateWithDataProvider(fontDataProvider); CGDataProviderRelease(fontDataProvider);
}
然后按如下方式使用它们:
-(void)drawRect:(CGRect)rect{
[super drawRect:rect]; // Get the context.
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, rect); // Set the customFont to be the font used to draw.
CGContextSetFont(context, customFont);
// Set how the context draws the font, what color, how big.
CGContextSetTextDrawingMode(context, kCGTextFillStroke); CGContextSetFillColorWithColor(context, self.fontColor.CGColor); UIColor * strokeColor = [UIColor blackColor];
CGContextSetStrokeColorWithColor(context, strokeColor.CGColor); CGContextSetFontSize(context, 48.0f);
// Create an array of Glyph's the size of text that will be drawn.
CGGlyph textToPrint[[self.theText length]];
// Loop through the entire length of the text.
for (int i = 0; i < [self.theText length]; ++i) { // Store each letter in a Glyph and subtract the MagicNumber to get appropriate value.
textToPrint[i] = [[self.theText uppercaseString] characterAtIndex:i] + 3 - 32;
}
CGAffineTransform textTransform = CGAffineTransformMake(1.0, 0.0, 0.0, -1.0, 0.0, 0.0);
CGContextSetTextMatrix(context, textTransform);
CGContextShowGlyphsAtPoint(context, 20, 50, textToPrint, [self.theText length]);
}
在某些情况下,您可能无法使用某些互联网下载的字体。 Here是相同的参考: