iOS 에서 iconformant 아이콘 을 어떻게 사용 하 는 지 상세 하 게 설명 합 니 다.

10326 단어 iosiconfont아이콘
1.iconform 이란 무엇 인가
iconFont 을 뜯 어 보면 Icon+Font 입 니 다.그러면 여러분 들 이 무엇 인지 이해 할 수 있 을 것 같 습 니 다.그러면 이들 의 결합 은 무엇 일 까요?맞다!바로 IconFont!개발 자가 글꼴 처럼 아이콘 을 사용 하도록 합 니 다.자신 이 할 줄 모 르 면 직접 알 리 의아이콘 글꼴 아이콘 라 이브 러 리에 가서 자신 이 필요 로 하 는 아이콘 을 다운로드 할 수 있다.
2.iconform 을 사용 하 는 이유
프로젝트 를 개발 할 때 각종 아이콘 을 사용 할 수 밖 에 없습니다.서로 다른 장 치 를 맞 추기 위해 서 는 보통@2x 와@3x 두 개의 그림 이 필요 합 니 다.예 를 들 어 우리 tabBar 에서 사용 하 는 아이콘 입 니 다.일부 app 은 피 부 를 바 꿀 필요 가 있 고 서로 다른 주제 에 맞 는 그림 도 여러 세트 가 필요 합 니 다.컷 팅 을 사용 하면 디자인 과 개발 에 있어 작업량 이 증가 하고 아이 패드 의 부피 도 커진다.
iconformant 를 사용 하 는 장점:
1.아이 패드 크기 줄 이기
2.아이콘 보 정 크기 조정,다 중 장치 에 그림 을 배치 하여 문 제 를 해결 합 니 다.
3.스킨 케 어 요구 에 부 응 하여 사용 이 편리 하 다.
3.iconform 을 어떻게 사용 합 니까
1.먼저아이콘 글꼴 아이콘 라 이브 러 리가서 자신 이 필요 로 하 는 아이콘 을 다운로드 합 니 다.
약서 에 gif 크기 가 이렇게 제한 되 어 있어 서 동 도 를 프로젝트 에 넣 었 습 니 다.필요 한 것 은 문 말 에 git 주소 가 있 습 니 다.

그림 에서 우 리 는 자신 이 필요 로 하 는 icon 을 선택 하여 카 트 에 가입 한 다음 에 프로젝트 에 가입 할 수 있다.물론 카 트 에서 직접 다운로드 할 수도 있다.그러나 이렇게 하면 icon 을 원 하 는 스타일 로 수정 하지 않 고 프로젝트 에 가입 하면 icon 을 원 하 는 스타일 로 임의로 수정 할 수 있다.

메모:여 기 는 다운로드 코드 입 니 다.그러면 프로젝트 에서 직접 사용 할 수 있 습 니 다.
2.다운로드 한 icon 자원 을 자신의 항목 에 추가 합 니 다.

우리 가 필요 로 하 는 것 은 바로 이 iconfont.ttf 입 니 다.이 ttf 파일 에 대해 나 는 우리 가 결코 낯 설 지 않다 고 생각 합 니 다.새 항목 입 니 다.이 ttf 파일 을 자신의 항목 에 끌 어 다 놓 으 십시오.

메모:그림 옵션 선택
다음 설정 항목 에서 이 파일 을 불 러 옵 니 다.
파일 이 항목 에 있 는 지 확인 하 십시오.그렇지 않 으 면 무 너 집 니 다.

plist 파일 에 글꼴 추가

그 다음 에 우 리 는 과학 기술 을 통 해 iconfont 패키지 에 관 한 것 을 써 서 우리 가 iconfont 를 사용 하 는 데 편리 하도록 한다.iconformant 패키지 포함

도구 클래스
TBCity IconInfo.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
TBCity IconInfo.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
TBCity IconFont.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;
TBCity IconFont.m 의 실현

#import "TBCityIconFont.h"
#import <CoreText/CoreText.h>

@implementation TBCityIconFont

static 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+TBCity IconFont.h 의 실현

#import <UIKit/UIKit.h>
#import "TBCityIconInfo.h"

@interface UIImage (TBCityIconFont)

+ (UIImage *)iconWithInfo:(TBCityIconInfo *)info;

@end
UIImage+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 에서 iconform 초기 화

#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];
 //     &#xe600,    \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
결 과 는 다음 그림 과 같다.

주의:
1.사용 하 는 유 니 코드 인 코딩 은 수 동 으로&\#xXXXX 형식 을\\UXXXXXXXX 형식 으로 변환 해 야 합 니 다.예 를 들 어/아이콘 인 코딩 은&\#xe 600 이 고\\U000me 600 으로 전환 해 야 합 니 다.
2.필요 한 유 니 코드 인 코딩 은 다운로드 한 iconform 폴 더 의.html 파일 에서 열 어 볼 수 있 습 니 다.

본문demo로 컬 다운로드,비판 시정 환영
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기