亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS中如何使用iconfont圖標實例詳解

2019-10-21 18:40:05
字體:
來源:轉載
供稿:網友

1.什么是iconfont

iconFont拆開來看,就是 Icon + Font,這樣估計大家應該都能理解是什么,那兩者結合是什么呢?沒錯!就是 IconFont !讓開發者像使用字體一樣使用圖標。如果自己不會做的話,可以直接去阿里的iconfont圖標庫下載自己需要的圖標。

2.為什么要使用iconfont

在開發項目時,不可避免的會用到各種圖標,為了適配不同的設備,通常需要@2x和@3x兩套圖,例如說我們tabBar上使用的圖標。有些app有換膚的需要,還需要多套不同的圖來進行匹配不同的主題。如果使用切圖,這對于設計和開發來說無疑是增加了工作量,而且ipa的體積也會增大。

使用iconfont的好處:

1. 減小ipa包的大小

2. 圖標保真縮放,多設備適配一套圖解決問題

3. 適應換膚要求,使用方便。

3.怎么用iconfont

1. 首先去iconfont圖標庫下載自己需要的圖標。

簡書里竟然gif大小限制的這么厲害,所以將動圖放到項目里了,需要的在文末有git地址

iOS,iconfont,圖標

如圖我們可以選擇自己需要的icon加入到購物車,然后加入項目里,當然你也可以直接在購物車直接下載,但是這樣只是沒有修改icon為自己想要的樣式,加入項目中,你可以自己任意修改icon為自己想要的樣式。

iOS,iconfont,圖標

注意:這里是下載代碼,這樣我們就可以在項目中直接使用

2.將下載下來的icon資源添加到自己的項目中。

iOS,iconfont,圖標

我們所需要的就是這個iconfont.ttf,對于這個ttf文件,我想我們并不陌生吧。新建項目,將這個ttf文件拖入自己的項目里。

iOS,iconfont,圖標

注意:勾選如圖選項

接下來配置項目加載這個文件

檢查文件是否在項目中,不然會崩潰

iOS,iconfont,圖標

在plist文件中加入字體

iOS,iconfont,圖標

接下來我們借助淘點點科技寫的一個關于iconfont封裝,方便我們使用iconfont。iconfont的封裝包括

iOS,iconfont,圖標
工具類

TBCityIconInfo.h的實現

#import <Foundation/Foundation.h>#import <UIKit/UIKit.h>@interface TBCityIconInfo : NSObject@property (nonatomic, strong) NSString *text;@property (nonatomic, assign) NSInteger size;@property (nonatomic, strong) UIColor *color;- (instancetype)initWithText:(NSString *)text size:(NSInteger)size color:(UIColor *)color;+ (instancetype)iconInfoWithText:(NSString *)text size:(NSInteger)size color:(UIColor *)color;@end

TBCityIconInfo.m的實現

#import "TBCityIconInfo.h"@implementation TBCityIconInfo- (instancetype)initWithText:(NSString *)text size:(NSInteger)size color:(UIColor *)color { if (self = [super init]) {  self.text = text;  self.size = size;  self.color = color; } return self;}+ (instancetype)iconInfoWithText:(NSString *)text size:(NSInteger)size color:(UIColor *)color { return [[TBCityIconInfo alloc] initWithText:text size:size color:color];}@end

TBCityIconFont.h的實現

#import "UIImage+TBCityIconFont.h"#import "TBCityIconInfo.h"#define TBCityIconInfoMake(text, imageSize, imageColor) [TBCityIconInfo iconInfoWithText:text size:imageSize color:imageColor]@interface TBCityIconFont : NSObject+ (UIFont *)fontWithSize: (CGFloat)size;+ (void)setFontName:(NSString *)fontName;

TBCityIconFont.m的實現

#import "TBCityIconFont.h"#import <CoreText/CoreText.h>@implementation TBCityIconFontstatic NSString *_fontName;+ (void)registerFontWithURL:(NSURL *)url { NSAssert([[NSFileManager defaultManager] fileExistsAtPath:[url path]], @"Font file doesn't exist"); CGDataProviderRef fontDataProvider = CGDataProviderCreateWithURL((__bridge CFURLRef)url); CGFontRef newFont = CGFontCreateWithDataProvider(fontDataProvider); CGDataProviderRelease(fontDataProvider); CTFontManagerRegisterGraphicsFont(newFont, nil); CGFontRelease(newFont);}+ (UIFont *)fontWithSize:(CGFloat)size { UIFont *font = [UIFont fontWithName:[self fontName] size:size]; if (font == nil) {  NSURL *fontFileUrl = [[NSBundle mainBundle] URLForResource:[self fontName] withExtension:@"ttf"];  [self registerFontWithURL: fontFileUrl];  font = [UIFont fontWithName:[self fontName] size:size];  NSAssert(font, @"UIFont object should not be nil, check if the font file is added to the application bundle and you're using the correct font name."); } return font;}+ (void)setFontName:(NSString *)fontName { _fontName = fontName; }+ (NSString *)fontName { return _fontName ? : @"iconfont";}@end

UIImage+TBCityIconFont.h的實現

#import <UIKit/UIKit.h>#import "TBCityIconInfo.h"@interface UIImage (TBCityIconFont)+ (UIImage *)iconWithInfo:(TBCityIconInfo *)info;@endUIImage+TBCityIconFont.m的實現#import "UIImage+TBCityIconFont.h"#import "TBCityIconFont.h"#import <CoreText/CoreText.h>@implementation UIImage (TBCityIconFont)+ (UIImage *)iconWithInfo:(TBCityIconInfo *)info { CGFloat size = info.size; CGFloat scale = [UIScreen mainScreen].scale; CGFloat realSize = size * scale; UIFont *font = [TBCityIconFont fontWithSize:realSize]; UIGraphicsBeginImageContext(CGSizeMake(realSize, realSize)); CGContextRef context = UIGraphicsGetCurrentContext();  if ([info.text respondsToSelector:@selector(drawAtPoint:withAttributes:)]) {  /**   * 如果這里拋出異常,請打開斷點列表,右擊All Exceptions -> Edit Breakpoint -> All修改為Objective-C   * See: http://stackoverflow.com/questions/1163981/how-to-add-a-breakpoint-to-objc-exception-throw/14767076#14767076   */  [info.text drawAtPoint:CGPointZero withAttributes:@{NSFontAttributeName:font, NSForegroundColorAttributeName: info.color}]; } else {  #pragma clang diagnostic push#pragma clang diagnostic ignored "-Wdeprecated-declarations"  CGContextSetFillColorWithColor(context, info.color.CGColor);  [info.text drawAtPoint:CGPointMake(0, 0) withFont:font];#pragma clang pop }  UIImage *image = [UIImage imageWithCGImage:UIGraphicsGetImageFromCurrentImageContext().CGImage scale:scale orientation:UIImageOrientationUp]; UIGraphicsEndImageContext();  return image;}@end

3.具體使用方法

1.在AppDelegate.m中,初始化iconfont

#import "AppDelegate.h"#import "TBCityIconFont.h"#import "ViewController.h"@interface AppDelegate ()@end@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. [TBCityIconFont setFontName:@"iconfont"]; UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:[ViewController new]]; self.window.rootViewController = nav; [self.window makeKeyAndVisible]; return YES;}

在ViewController.m中實現

#import "ViewController.h"#import "TBCityIconFont.h"#import "UIImage+TBCityIconFont.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 100, 30, 30)]; [self.view addSubview:imageView]; //圖標編碼是,需要轉成/U0000e600 imageView.image = [UIImage iconWithInfo:TBCityIconInfoMake(@"/U0000e600", 30, [UIColor redColor])];   // button UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem]; button.frame = CGRectMake(100, 150, 40, 40); [self.view addSubview:button]; [button setImage:[UIImage iconWithInfo:TBCityIconInfoMake(@"/U0000e614", 40, [UIColor redColor])] forState:UIControlStateNormal];  // label,label可以將文字與圖標結合一起,直接用label的text屬性將圖標顯示出來 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(50, 200, 280, 40)]; [self.view addSubview:label]; label.font = [UIFont fontWithName:@"iconfont" size:15];//設置label的字體 label.text = @"在lable上顯示 /U0000e658";   // Do any additional setup after loading the view, typically from a nib.}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end

結果如下圖所示:

iOS,iconfont,圖標

注意:

1. 所用到的unicode編碼需要自己手動將&#xXXXX格式轉換成/UXXXXXXXX格式,例如//圖標編碼是,需要轉成/U0000e600

2. 所有需要的unicode編碼都可以在下載的iconfont文件夾中的.html文件打開查看

iOS,iconfont,圖標

本文demo,歡迎批評指正

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲最大福利网| 久久精品国产久精国产思思| 日本精品一区二区三区在线播放视频| 大胆人体色综合| 久久久久久高潮国产精品视| 日本精品在线视频| 欧美国产日韩二区| 国产精品美女久久久久久免费| 国产亚洲精品久久| 国产精品久久久久久av| 日韩国产在线看| 精品国产一区av| 欧美极品少妇xxxxⅹ裸体艺术| 91理论片午午论夜理片久久| 欧美精品18videosex性欧美| 欧美激情乱人伦一区| 国产精品激情av电影在线观看| 日韩av中文字幕在线| 亚洲一区二区自拍| 久久久久久97| 欧洲s码亚洲m码精品一区| 尤物yw午夜国产精品视频| 性欧美亚洲xxxx乳在线观看| 亚洲成av人片在线观看香蕉| 亚洲一区av在线播放| 91嫩草在线视频| 5278欧美一区二区三区| 久久精品国产96久久久香蕉| 国产欧美久久一区二区| 久久久精品2019中文字幕神马| 日韩欧美在线视频日韩欧美在线视频| 国产成人aa精品一区在线播放| 88xx成人精品| 欧美日韩综合视频| 国产亚洲精品一区二555| 国产美女久久精品| 亚洲一区二区久久久久久久| 日韩av不卡电影| 亚洲视频在线免费看| 伊人伊成久久人综合网站| 国内精品久久久久伊人av| 韩国欧美亚洲国产| 欧美伊久线香蕉线新在线| 亚洲风情亚aⅴ在线发布| 国产91精品视频在线观看| 欧美国产日韩一区二区在线观看| 一区二区成人av| 琪琪第一精品导航| 色婷婷av一区二区三区在线观看| 国产欧美久久一区二区| 在线日韩欧美视频| 亚洲欧美在线磁力| 伦伦影院午夜日韩欧美限制| 2019中文字幕在线免费观看| 亚洲跨种族黑人xxx| 日韩欧美在线播放| 日韩精品一区二区视频| 久久久免费精品| 亚洲在线免费视频| 国产精品扒开腿做爽爽爽的视频| 久久午夜a级毛片| 久久人体大胆视频| 久久精品91久久香蕉加勒比| 欧美视频在线免费| 国产精品大陆在线观看| 国产精品一区二区三区成人| 91手机视频在线观看| 欧美在线视频一二三| 亚洲第一精品夜夜躁人人爽| 午夜精品美女自拍福到在线| 欧美巨大黑人极品精男| 亚洲一级黄色av| 91免费精品视频| 亚洲成人免费网站| 色婷婷综合成人av| 亚洲欧洲激情在线| 日韩在线中文字| 亚洲免费电影一区| 欧美孕妇毛茸茸xxxx| 成人av电影天堂| 中日韩午夜理伦电影免费| 亚洲乱码国产乱码精品精| 福利二区91精品bt7086| 97免费视频在线播放| 国产精品无码专区在线观看| 91爱爱小视频k| 亚洲女人被黑人巨大进入al| 中文字幕欧美在线| 欧美亚洲视频在线观看| 91免费综合在线| 欧美亚州一区二区三区| 国产香蕉一区二区三区在线视频| 中文日韩在线观看| 麻豆乱码国产一区二区三区| 欧美成人中文字幕| 国产精品黄页免费高清在线观看| 欧美视频中文在线看| 国产视频久久久久久久| 欧美成人亚洲成人日韩成人| 91久久嫩草影院一区二区| 久久久久久久香蕉网| 成人av在线网址| 成人福利在线观看| 亚洲精品永久免费精品| 久久精品成人动漫| 久久国产精品影视| 亚洲最大激情中文字幕| 久久久久久久久网站| 亚洲女人天堂视频| 久久夜色精品国产| 欧美电影在线播放| 亚洲影院色无极综合| 欧美性精品220| 国产精品极品美女在线观看免费| 日韩av在线电影网| 国产区精品在线观看| 国产精品久久久久久久av电影| 欧美久久精品一级黑人c片| 亚洲第一视频在线观看| 欧洲成人免费aa| 久久九九全国免费精品观看| 国产91在线播放九色快色| 最新亚洲国产精品| 91久久国产精品| 亚洲精品av在线| 亚洲视频综合网| 国产精品亚洲第一区| 在线观看日韩欧美| 欧美视频在线观看免费网址| 亚洲欧美一区二区激情| 欧美一区在线直播| 色妞久久福利网| 亚洲a区在线视频| 亚洲综合国产精品| 国产女同一区二区| 中文字幕日韩电影| 久久久久久久爱| 日韩精品中文在线观看| 成人国产精品久久久久久亚洲| 九九久久久久99精品| 精品女厕一区二区三区| 欧美日韩国产一中文字不卡| 亚洲电影成人av99爱色| 亚洲国产欧美自拍| 欧美日韩亚洲一区二区三区| 国产精品永久免费在线| 欧美电影免费观看电视剧大全| 亚洲精品短视频| 26uuu另类亚洲欧美日本老年| 欧美日韩国产一中文字不卡| 久久国产精品久久久久久| 国产亚洲欧美另类中文| 成人黄色av网| 国产精品视频免费观看www| 国产亚洲精品一区二555| 国产成人小视频在线观看| 3344国产精品免费看| 亚洲自拍在线观看| 亚洲成人亚洲激情| 亚洲国产成人久久| www.精品av.com| 国产精品久久久久久久久久小说| 91精品久久久久久久久久久久久久| 精品久久久久久中文字幕大豆网|