iPhone SDK 3.2 и UIAppFonts

Я добавил свой пользовательский шрифт к UIAppFonts, и он загружается очень хорошо: (обнаруживается в [UIFont familyNames] ). Когда я вручную установил шрифт в viewDidLoad { [myLabel setFont: [UIFont fontWithName:@"CustomFont" size: 65.0]]; } все работает, и шрифт представляется.

Однако выполнение того же самого в IB не делает (некоторый другой стандартный шрифт используется вместо этого). Необходимость создать IBOutlets для каждой маркировки и согласовывание шрифтов вручную в viewDidLoad являются довольно болезненными.

У кого-либо еще были проблемы, заставляя поддержку пользовательского шрифта работать с 3,2 SDK и IB?

8
задан Douwe Maan 10 May 2010 в 12:19
поделиться

2 ответа

Открыл отчет об ошибке в Apple и выяснил, что это действительно ошибка. В итоге я использовал следующий обходной путь:

// LabelQuake.h
@interface LabelQuake : UILabel
@end

// LabelQuake.m
@implementation LabelQuake

    - (id)initWithCoder:(NSCoder *)decoder {
        if (self = [super initWithCoder: decoder]) {
            [self setFont: [UIFont fontWithName: @"Quake" size: self.font.pointSize]];
        }

        return self;
    }
@end

Написал немного более длинный пост в нашем блоге .

2
ответ дан 5 December 2019 в 23:14
поделиться

была похожая проблема. и решил ее так...

добавьте мой пользовательский шрифт в группу ресурсов. затем загрузите все шрифты с помощью кода, приведенного ниже:

- (NSUInteger) loadFonts{
NSUInteger newFontCount = 0;
NSBundle *frameworkBundle = [NSBundle bundleWithIdentifier:@"com.apple.GraphicsServices"];
const char *frameworkPath = [[frameworkBundle executablePath] UTF8String];
if (frameworkPath) {
    void *graphicsServices = dlopen(frameworkPath, RTLD_NOLOAD | RTLD_LAZY);
    if (graphicsServices) {
        BOOL (*GSFontAddFromFile)(const char *) = dlsym(graphicsServices, "GSFontAddFromFile");
        if (GSFontAddFromFile)
            for (NSString *fontFile in [[NSBundle mainBundle] pathsForResourcesOfType:@"ttf" inDirectory:nil])
                newFontCount += GSFontAddFromFile([fontFile UTF8String]);
    }
}

return newFontCount;}


 - (id)initWithCoder:(NSCoder *)decoder {
    //load the fonts
    [self loadFonts];

    if (self = [super initWithCoder: decoder]) {
        [self setFont: [UIFont fontWithName: @"Quake" size: self.font.pointSize]];
    }

    return self;
}

Надеюсь, это сработает.

2
ответ дан 5 December 2019 в 23:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: