iOS 에서 iconformant 아이콘 을 어떻게 사용 하 는 지 상세 하 게 설명 합 니 다.
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];
// , \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로 컬 다운로드,비판 시정 환영
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift의 패스트 패스Objective-C를 대체하기 위해 만들어졌지만 Xcode는 Objective-C 런타임 라이브러리를 사용하기 때문에 Swift와 함께 C, C++ 및 Objective-C를 컴파일할 수 있습니다. Xcode는 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.