ios android 通用字体,教你如何在iOS项目中设置各种字体
在iOS开发中设置字体的方法有很多种,下面为大家介绍比较常用的三种方法
1.使用系统默认提供的字体
系统默认提供的字体主要是指UIFont中提供的字体,其使用代码为:
fontLabel.font = [UIFont fontWithName:@"Marion"size:17];
或者是通过字体详细字典对字体属性进行设置
/*UIFontDescriptorFamilyAttribute:设置字体家族名
UIFontDescriptorNameAttribute :设置字体的字体名
UIFontDescriptorSizeAttribute :设置字体尺寸
UIFontDescriptorMatrixAttribute:设置字体形变*/UIFontDescriptor*attributeFontDescriptor =[UIFontDescriptor fontDescriptorWithFontAttributes:
@{UIFontDescriptorFamilyAttribute:@"Marion",
UIFontDescriptorNameAttribute:@"Marion-Regular",
UIFontDescriptorSizeAttribute: @40.0,
UIFontDescriptorMatrixAttribute:[NSValue valueWithCGAffineTransform:CGAffineTransformMakeRotation(M_1_PI*1.5)
]}];
fnotLabel.font= [UIFont fontWithDescriptor:attributeFontDescriptor size:0.0];
其中的字体家族名和字体名可以通过以下方法获取
NSLog(@"familyNames:%@",[UIFont familyNames]);
以上两种方法均可以为label设置字体,但是全部是只针对英文数字,对中文无效。要想改变中文字体还需要使用后面两种办法
2.动态下载字体
iOS6以后苹果就开始支持动态下载中文字体已供应用中展示个性字体的需求,由于下载的时候需要使用的名字是PostScript名称,需要使用Mac内自带的应用“字体册“来获得相应字体的PostScript名称。如下显示了从”字体册“中获取《娃娃体-繁常规体》字体的PostScript名称的截图
具体代码就不一一介绍了,大家可以参考苹果提供的有关文档:https://developer.apple.com/library/ios/samplecode/DownloadFont/Listings/DownloadFont_ViewController_m.html#//apple_ref/doc/uid/DTS40013404-DownloadFont_ViewController_m-DontLinkElementID_6
或者也可以参考唐巧先生的博客有比较详细的介绍:http://blog.devtang.com/blog/2013/08/11/ios-asian-font-download-introduction/
下面是我研究后的测试demo,提供给大家参考:
- (void)asynchronouslySetFontName:(NSString *)fontName
{
UIFont* aFont = [UIFont fontWithName:fontName size:24];//If the font is already downloadedif(aFont && ([aFont.fontName compare:fontName] == NSOrderedSame || [aFont.familyName compare:fontName] ==NSOrderedSame)) {//Go ahead and display the sample text._fLabelView.text =@"欢迎查看我的博客";
_fLabelView.font= [UIFont fontWithName:fontName size:24];return;
}//Create a dictionary with the font's PostScript name.NSMutableDictionary *attrs =[NSMutableDictionary dictionaryWithObjectsAndKeys:fontName, kCTFontNameAttribute, nil];//Create a new font descriptor reference from the attributes dictionary.CTFontDescriptorRef desc =CTFontDescriptorCreateWithAttributes((__bridge CFDictionaryRef)attrs);
NSMutableArray*descs = [NSMutableArray arrayWithCapacity:0];
[descs addObject:(__bridgeid)desc];
CFRelease(desc);
__block BOOL errorDuringDownload=NO;//Start processing the font descriptor..//This function returns immediately, but can potentially take long time to process.//The progress is notified via the callback block of CTFontDescriptorProgressHandler type.//See CTFontDescriptor.h for the list of progress states and keys for progressParameter dictionary.CTFontDescriptorMatchFontDescriptorsWithProgressHandler( (__bridge CFArrayRef)descs, NULL, ^(CTFontDescriptorMatchingState state, CFDictionaryRef progressParameter) {//NSLog( @"state %d - %@", state, progressParameter);doubleprogressValue = [[(__bridge NSDictionary *)progressParameter objectForKey:(id)kCTFontDescriptorMatchingPercentage] doubleValue];if(state ==kCTFontDescriptorMatchingDidBegin) {
dispatch_async( dispatch_get_main_queue(),^{//Show an activity indicatorNSLog(@"Begin Matching");
});
}elseif(state ==kCTFontDescriptorMatchingDidFinish) {
dispatch_async( dispatch_get_main_queue(),^{//Remove the activity indicator//Display the sample text for the newly downloaded font_fLabelView.text =@"欢迎查看我的博客";
_fLabelView.font= [UIFont fontWithName:fontName size:24];//Log the font URL in the consoleCTFontRef fontRef = CTFontCreateWithName((__bridge CFStringRef)fontName,0., NULL);
CFStringRef fontURL=CTFontCopyAttribute(fontRef, kCTFontURLAttribute);
NSLog(@"%@", (__bridge NSURL*)(fontURL));
CFRelease(fontURL);
CFRelease(fontRef);if(!errorDuringDownload) {
NSLog(@"%@ downloaded", fontName);
}
});
}elseif(state ==kCTFontDescriptorMatchingWillBeginDownloading) {
dispatch_async( dispatch_get_main_queue(),^{//Show a progress barNSLog(@"Begin Downloading");
});
}elseif(state ==kCTFontDescriptorMatchingDidFinishDownloading) {
dispatch_async( dispatch_get_main_queue(),^{//Remove the progress barNSLog(@"Finish downloading");
});
}elseif(state ==kCTFontDescriptorMatchingDownloading) {
dispatch_async( dispatch_get_main_queue(),^{//Use the progress bar to indicate the progress of the downloadingNSLog(@"Downloading %.0f%% complete", progressValue);
});
}elseif(state ==kCTFontDescriptorMatchingDidFailWithError) {//An error has occurred.//Get the error messageNSError *error = [(__bridge NSDictionary *)progressParameter objectForKey:(id)kCTFontDescriptorMatchingError];if(error !=nil) {
_errorMessage=[error description];
}else{
_errorMessage=@"ERROR MESSAGE IS NOT AVAILABLE!";
}//Set our flagerrorDuringDownload =YES;
dispatch_async( dispatch_get_main_queue(),^{
NSLog(@"Download error: %@", _errorMessage);
});
}return(bool)YES; }); }
只要在相应地方调用就可以了:
- (void)viewDidLoad {
[super viewDidLoad];//Do any additional setup after loading the view, typically from a nib._fLabelView = [[UITextView alloc] initWithFrame:CGRectMake(50,100,250,100)];
[self.view addSubview:_fLabelView];
[self asynchronouslySetFontName:@"HanziPenSC-W3"];
}
下面是运行后的结果:
3.引入外部字体
现在网上不管是windows字体,还是Android字体只要是ttf格式的,或者是苹果提供的ttc、otf格式,一般iOS程序都支持内嵌。具体做法:
先将需要下载的字体拖到项目中
在info文件中添加相应字段
然后就可以使用上面提供的方法[UIFont fontWithName:@"迷你简咪咪" size:17]方法给英文、数字或者中文设置上这种字体。可以输出一下[UIFont familyNames]检测是否已经添加
也可以在xib中为label设置这种字体了
网上下载的字体也不一定都是可以使用,下面提供大家一些常用字体供大家下载:
链接: http://pan.baidu.com/s/1kTVX8qF 密码: vdwa
要想获取更加全面的字体还可以使用苹果自己提供的各种字体格式,还是可以通过Mac应用“字体侧”获取,例如:
用法跟下载的字体一样
ios android 通用字体,教你如何在iOS项目中设置各种字体相关推荐
- 教你如何在iOS项目中设置各种字体
原文地址为: 教你如何在iOS项目中设置各种字体 在iOS开发中设置字体的方法有很多种,下面为大家介绍比较常用的三种方法 1.使用系统默认提供的字体 系统默认提供的字体主要是指UIFont中提供的字体 ...
- 如何在vue项目中设置首页
如何在vue项目中设置首页 1.首先创建一个vue为后缀名的文件,最好在新建的文件夹下面创建,如下图所示: 说明:一般我们的主要页面代码都是写在vue 项目中的这个src文件夹下,项目中所会引用到的组 ...
- java swing 字体设置_如何在Java SWING中设置自定义字体的大小和其他属性(粗体,斜体等)...
通常,当我初始化我想在SWING应用程序中使用的字体时,我这样做: public static final Font TITLEFONT = new Font("Calibri", ...
- java swing 字体显示_如何在Java Swing中使用Wingdings字体
当我尝试使用Wingdings字体(或其他符号字体)时,文本显示为矩形而不是正确的文本.如何显示正确的字符? import java.awt.*; import javax.swing.*; publ ...
- 一步步教你如何在SpringBoot项目中引入支付功能
听说微信搜索<Java鱼仔>会变更强哦! 本文收录于JavaStarter ,里面有我完整的Java系列文章,学习或面试都可以看看哦 (一)引言 支付功能如今已经成为一个需要盈利的网站的基 ...
- word中字体 html,在Word 2010中设置文本字体
在本章中,我们将讨论如何在Word 2010中设置文本字体和大小.Microsoft字允许您使用不同大小的不同字体.您可以通过更改字体及其大小来更改文档的外观.通常您会为段落和标题使用不同的字体.学习 ...
- iSpring Suite教程:如何在iSpring Suite中设置麦克风
iSpring Suite是用于PowerPoint的完整的电子学习创作工具包.这篇文章是一篇iSpring Suite的使用教程,教您如何在iSpring Suite中设置麦克风~ 点击下载iSpr ...
- vux 显示 html,如何在vue项目中使用vux
编者:只需6步,教你如何在vue项目中使用vux, 1.在项目里安装vuxnpm install vux --save2.安装vux-loader (这个vux文档中没有明文跟你说要安装的啦) np ...
- 如何在vue项目中系统的使用iconfont字体图标
如何在vue项目中系统的使用iconfont字体图标 前言 iconfont的特色 官网注册 在项目中使用的方式 前言 今天聊一下前端iconfont的使用方式,前端的图标经过这些年的发展,变得更系统 ...
- Android如何在java代码中设置margin
Android如何在java代码中设置margin,也就是组件与组件之间的间距. 代码中设置: LinearLayout.LayoutParams params = new LinearLayout. ...
最新文章
- DevCon工具基本使用
- matlab 信息融合,MSDF,matlab,多传感器信息融合
- python classmethod函数_在python中使用与instance和classmethod相同的函数
- mha数据备份_MySQL备份与恢复之保证数据一致性(5)
- 常见的云计算安全问题
- 机器学习之MCMC算法(转载)
- 利用U盘制作虚拟软驱加载raid驱动
- Matlab有趣代码
- 【网页设计自习室#005】网页页面中banner海报设计
- 输入关键字生成对联_自动对联工具
- linux 应用程序 dma,Linux之DMA API(上)
- 今日早报 每天一分钟知晓天下事 3-13
- LSTM和GRU的对比和分析
- Cinemachine 之简单的相机跟随
- css中textarea去掉边框和取消选中后的边框
- ASP.NET 设计导航栏(横向竖向)
- vulnhub--Thoth Tech: 1
- Linux下软中断过程(详细)源码总结
- u盘启动计算机看不到硬盘,解决办法:从U盘启动时找不到硬盘的解决方法
- Java中的Base64详解