iOS iconfont 圖標字體


  iconfont 技術的主要是將圖標轉化為字體來減少應用體積。如需在項目中使用iconfont技術,圖標矢量圖一開始都應合並轉化為字體庫。
 
優點:
  • 減小體積,字體文件比圖片要小
  • 圖標保真縮放,解決2x/3x乃至將來的nx圖問題
  • 方便更改顏色大小,圖片復用
 
缺點:
  • 只適用於純色icon
  • 使用unicode字符難以理解
  • 需要維護字體庫
 
 
字體管理
     字體管理方式分為兩種:在線管理( iconfont.cn)和FontForge工具。
  
 
字體庫生成
     這里推薦兩個比較好用的網站iconmoon和iconfon,個人在做網頁的時候,經常會在iconmoon上制作字體圖標。如果設計師給你了字體庫最好,如果給你的是 .svg 文件,就需要自己去轉為字體庫了。這里以iconmoon為例制作字體庫,iconmoon需要翻牆。
 
1、導入設計師給的 .svg 文件
 
 
 
2、點擊Generate Font 生成字體庫,如下圖
 
 
 
3、打開下載的文件夾,如下圖
 
 
 
 
4、將.ttf 的字體庫,導入項目中,要確保在下圖路徑中可以看到字體庫
 
 
 
5、在plist文件中,添加字段Fonts provided by application並在該字段下添加GWH_search.ttf。工程中便可使用字體庫了。
 
 
 
6、打開demo.html,可以看到圖標字體的Unicode編碼
 
 
     使用的時候只需要將圖標對應的Unicode編碼轉化為text字符串即可,轉化方式’\U0000 + 對應編碼’
 
示例:
  • [_textLabelfontWithIcon:@"\U0000e900"size:14color:[UIColorredColor]];

    UIImageView *imgV = [[UIImageViewalloc] initWithFrame:CGRectMake(100, 100, 30, 30)];
    [imgV setImage:kImageFont(@"\U0000e900", 17, [UIColorgreenColor])];
    [self.viewaddSubview:imgV];


    UIButton *iconBtn = [[UIButtonalloc] initWithFrame:CGRectMake(100, 150, 30, 30)];
    [iconBtn setTitleWithIcon:@"\U0000e900"size:14color:[UIColormagentaColor]];
    [self.viewaddSubview:iconBtn];
 
效果:
 
分類:
UIImage+IconFont.m
  • + (UIImage *)imageWithIcon:(NSString *)iconCode size:(NSUInteger)size color:(UIColor *)color {
        CGSize imageSize = CGSizeMake(size, size);
        // opaque:NO 不透明
        UIGraphicsBeginImageContextWithOptions(imageSize, NO, [[UIScreenmainScreen] scale]);
        UILabel *label = [[UILabelalloc] initWithFrame:CGRectMake(0, 0, size, size)];
        label.font = [UIFontfontWithName:@"GWH_search"size:size];
        label.text = iconCode;
        if(color){
            label.textColor = color;
        }
        [label setNumberOfLines:0];
        label.textAlignment = NSTextAlignmentCenter;
        // 渲染自身
        [label.layerrenderInContext:UIGraphicsGetCurrentContext()];
        UIImage *retImage = [UIGraphicsGetImageFromCurrentImageContext() imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
        UIGraphicsEndImageContext();
        return retImage;
    }
 
 
UIButton+IconFont.m
  • - (void)setTitleWithIcon:(NSString *)iconCode size:(NSInteger)size color:(UIColor *)color {
        [selfsetTitle:iconCode forState:UIControlStateNormal];
        self.titleLabel.font = [UIFontfontWithName:@"GWH_search"size:size];
        if (color) {
            [selfsetTitleColor:color forState:UIControlStateNormal];
        }
    }
 
 
UILabel+IconFont.m
  • - (void)fontWithIcon:(NSString *)iconCode size:(NSInteger)size color:(UIColor *)color {
        self.font = [UIFontfontWithName:@"GWH_search"size:size];
        self.text = iconCode;
        if (color) {
            self.textColor = color;
        }
    }
 
 
 
 
 
 
 
 
參考鏈接:
     
     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM