动态加载第三方字库

来源:互联网 发布:linux开机no such file 编辑:程序博客网 时间:2024/06/05 09:07

试了很多加载第三方字体的方法都会有内存不泄露的问题, 下面是调试后的代码:


+(NSArray*)getFontArray:(NSString*)path size:(CGFloat)size

{

    NSMutableArray *fontArray = [[NSMutableArrayalloc] initWithObjects:[UIFontsystemFontOfSize:size], nil];

    NSArray *file = [[NSFileManagerdefaultManager] subpathsOfDirectoryAtPath: patherror:nil];

    for (NSString *fileNamein file) {

        

        NSString *filePath = [NSStringstringWithFormat:@"%@/%@",path,fileName];

//        [self registerFont:filePath];

        

        NSURL *fontUrl = [NSURLfileURLWithPath:filePath];

        CGDataProviderRef fontDataProvider =CGDataProviderCreateWithURL((__bridgeCFURLRef)fontUrl);

        CGFontRef fontRef =CGFontCreateWithDataProvider(fontDataProvider);


        CGDataProviderRelease(fontDataProvider);

        CTFontManagerRegisterFontsForURL((__bridgeCFURLRef)fontUrl, kCTFontManagerScopeNone,NULL);

        NSString *fontName =CFBridgingRelease(CGFontCopyPostScriptName(fontRef));

        if (fontName) {

            UIFont *font = [UIFontfontWithName:fontName size:size];

            if(font){

                [fontArray addObject:font];

            }

        }

        CTFontManagerUnregisterFontsForURL((__bridgeCFURLRef)fontUrl, kCTFontManagerScopeNone,NULL);

        CGFontRelease(fontRef);

         

    }

    return fontArray;

}

0 0
原创粉丝点击