0

我的 iphone 应用程序中有 600 个字体文件,应用程序无法找到包含这 600 个文件的 .xib 文件。如果我删除 600 个文件,.xib 文件会正确加载,没有问题。

我检查了应用程序中资源文件数量的限制,但没有。此外,文件的大小只有 100MB,这是可以的。我不知道问题是什么。

4

2 回答 2

1

好吧,我有好消息和坏消息。坏消息是你可能在 iOS 中遇到了一些软限制,因为 Apple 从未设想过有人想要在 iPhone 中使用这么多字体。

好消息(有点)是您可以直接从文件加载 CGFonts 和 CTFonts请参阅链接。不好的部分是您必须使用 Core Graphics 或 Core Text 进行绘图,因为这些东西不是免费桥接的。

于 2012-07-31T16:31:27.393 回答
0

谢谢你。这行得通。但是,它需要创建新层来写入而不是旧层..

这是完整的代码片段

#import <CoreText/CoreText.h>
#import <QuartzCore/QuartzCore.h>


CTFontRef ctfont =  [self newCustomFontWithName:@"cs" ofType:@"ttf" attributes:nil];
CATextLayer *  normalTextLayer_ = [[CATextLayer alloc] init];

normalTextLayer_.font = ctfont;
normalTextLayer_.string = @"alleluja";
normalTextLayer_.wrapped = YES;
normalTextLayer_.foregroundColor = [[UIColor purpleColor] CGColor];
normalTextLayer_.fontSize = 20.f;
normalTextLayer_.alignmentMode = kCAAlignmentCenter;
normalTextLayer_.frame = CGRectMake(0.f, 10.f, 320.f, 32.f);

[self.view.layer addSublayer:normalTextLayer_];    


CTFontRef cttFont =  [self newCustomFontWithName:@"cs" ofType:@"ttf" attributes:nil];
NSString *fontName = [(NSString *)CTFontCopyName(cttFont, kCTFontPostScriptNameKey) autorelease];

CGFloat fontSize = CTFontGetSize(cttFont);
NSLog(@"%f fontName = '%@'",fontSize,fontName);
UIFont *font = [UIFont fontWithName:fontName size:fontSize];
UITextView * xx = [[UITextView alloc] initWithFrame:CGRectMake(0, 100, 320, 200)];
xx.text = @"alleluja";
xx.font = font;



[self.view addSubview:xx];
于 2012-08-02T12:46:57.567 回答