iPhone SDK 3.2 and UIAppFonts

前端 未结 3 740
栀梦
栀梦 2020-12-15 12:06

I\'ve added my custom font to UIAppFonts and it\'s loaded just fine: (shows up in [UIFont familyNames] ). When I manually set the font in viewDidLoad { [m

相关标签:
3条回答
  • 2020-12-15 12:31

    If you don't want to have to subclass, this solution worked quick and dirty for me. Of course it assumes that all labels have the same font, and in my case that was the case.

    for (UIView *v in view.subviews) {
    
        if ([v isKindOfClass:[UILabel class]]) {
          UILabel *label = (UILabel*)v;
    
          [label setFont:[UIFont fontWithName:@"Quake" size:label.font.pointSize]];
        }
    }
    

    I put this in a helper class and just called it, passing in my current view.

    0 讨论(0)
  • 2020-12-15 12:36

    Opened a bug report with Apple and turns out it really is a bug. The workaround I ended up using is this:

    // 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
    

    Wrote a bit longer post at our blog.

    0 讨论(0)
  • 2020-12-15 12:53

    had simillar kind of problem.and fixed it in this way...

    add my custom font to my Resource group. then load all the fonts by the code given bellow:

    - (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;
    }
    

    Hope it will work.

    0 讨论(0)
提交回复
热议问题