iOS 自定义字体

引言:

看腻了清一色默认的App字体,换一个个性化体验也是不错的选择.

参考:

http://www.16kan.com/post/218270.html

http://blog.csdn.net/frankwun/article/details/7688950

字体在哪?

Mac 有一款自带App叫做字体册.  打开这个应用以后,可以看到目前内置在系统中的字体,iOS支持显示的格式有两种,分别是otfttf.

首选是otf

如何配置?

第一步:

将要使用的字体拖动到项目中.

第二步:

在Info.plist中添加Fonts provided by application项,加入一个item值为刚刚添加的字体文件文件名.

如何使用?

使用时要注意,字体文件名称,并非真正使用时的名称.

真正的名称在字体册的查看某一字体的详细参数时可以看到.如下图:

或者根据字体文件在应用中的路径通过代码来获得(不是特别准,可能偶尔需要手动调整):

NSString *fontPath = [[NSBundle mainBundle] pathForResource:fontFileNameArray[i] ofType:nil];
NSURL *url = [NSURL fileURLWithPath:fontPath];

CGDataProviderRef fontDataProvider = CGDataProviderCreateWithURL((__bridge CFURLRef)url);
if (fontDataProvider == NULL)
{
    break;
}

CGFontRef newFont = CGFontCreateWithDataProvider(fontDataProvider);
CGDataProviderRelease(fontDataProvider);
if (newFont == NULL)
{
    break;
}
CFStringRef fontName = CGFontCopyFullName(newFont);

NSString *fontNameString = (__bridge id)(fontName);
if ([fontNameString isEqualToString:@"Yuppy SC Regular"]) {
    fontNameString = @"YuppySC-Regular";
}
[fontNameMDic setObject:fontNameString forKey:fontFileNameArray[i]];

CFRelease(fontName);
CGFontRelease(newFont);

以下代码可以遍历出目前在iOS系统中可以使用的字体名称

NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyNames]];
NSArray *fontNames;
NSInteger indFamily, indFont;
for(indFamily=0;indFamily<[familyNames count];++indFamily)
{
    NSLog(@"Family name: %@", [familyNames objectAtIndex:indFamily]);
    fontNames =[[NSArray alloc]initWithArray:[UIFont fontNamesForFamilyName:[familyNames objectAtIndex:indFamily]]];
    for(indFont=0; indFont<[fontNames count]; ++indFont)
    {
        NSLog(@" Font name: %@",[fontNames objectAtIndex:indFont]);
    }
}

总结:

唯一不好处是字体的数据包很占用App的体积. 这个问题,有待解决.

 

时间: 2024-10-24 04:45:32

iOS 自定义字体的相关文章

IOS 添加自定义字体方法详解_IOS

1:获取字体文件 从各种渠道下载字体文件ttf, 网站或者从别的ipa里扣出来.(以fzltxh.ttf为例) 2:将fzltxh.ttf文件拷贝到工程中 3:在Info.plist中添加项: Fonts provided by application(UIAppFonts)  可以添加一个或多个item, 如 item0 --  fzltxh.ttf 4:找出真正的字体名称: 因为使用字体时, 要使用字体的真实名称, 而不是文件名, 可以用以下代码来遍历当前设备可用的字体名称, 再从中找出刚才

ios开发-IOS开发使用自定义字体路径问题求大神

问题描述 IOS开发使用自定义字体路径问题求大神 在项目开发中,我需要实现服务器管理UI风格,返回给我一个TTF格式的自定义字体包,我在加载里面的字体,问题就是服务器返给我的TTF字体包,我保存在沙盒里面读取不到.网上也找了很多资料,都没有答案,请问大神该怎么样解决.或者说我怎么把下载的字体加载到我的工程中 解决方案 http://blog.sina.com.cn/s/blog_9bf8abf301018pbr.html 解决方案二: iOS开发 - 使用自定义字体ios 使用自定义字体IOS使

CSS3中用自定义字体实现小图标icon

最近在做一个项目时, 研究了一下新浪微博的前端, 看到首页中那个图标了吗, 以前看到这类效果的第一反应就是用一个gif之类的图标做出来!! 但在研究的过程, 发现了一个小技巧, 注意那个em标签中的文本是E, 但显示出来一个类似ICON的图标.  既然是HTML+CSS写出来的, 那么应该是由css控制显示出来的效果的. 其他的一些css基本没什么问题, 都理解了, 但只有这个 font-family, 强制设置成了 "wbficonregular", 一般操作系统里应该没这个命名的字

怎么用adobe自定义字体

  怎么用adobe自定义字体 Faces项目介绍 Adobe首席产品设计师Lee Brimelow几周前曾简单展示过该公司的全新项目,代号"Faces",该项目可以让用户创建属于自己的个性化字体.从文末的视频中可以看到,"Faces"使用非常简单,用户只需拖动滑块就可以从现有标准字体的基础上,按照自己的喜好设计新字体. 这一项目的创意早已有之,可追溯到1998年.当时Adobe有一个运行在Win98上的小程序,名为 Ares Font Chameleon,用途和F

iOS自定义alertView提示框实例分享_IOS

本文实例为大家分享iOS自定义alertView提示框,先上图,弹框的背景色,按钮背景色,提示的消息的字体颜色都可以改变 利用单例实现丰富的自定义接口 // // PBAlertController.h // PBAlertDemo // // Created by 裴波波 on 16/4/20. // Copyright 2016年 裴波波. All rights reserved. // #import <UIKit/UIKit.h> typedef void(^PBBlock)(); @

iOS自定义日历控件的简单实现过程_IOS

因为程序要求要插入一个日历控件,该空间的要求是从当天开始及以后的六个月内的日历,上网查资料基本上都说只要获取两个条件(当月第一天周几和本月一共有多少天)就可以实现一个简单的日历,剩下的靠自己的简单逻辑就OK了,下面开始自己从开始到完成的整个过程 1.首先做NSDate类目,扩展一些方法让日期之间转换更加方便 #import <Foundation/Foundation.h> @interface NSDate (LYWCalendar) #pragma mark - 获取日 - (NSInte

iOS 自定义状态栏和导航栏详细介绍_IOS

iOS 自定义状态栏和导航栏            开发IOS APP 经常会根据需求更改状态栏和导航栏,这里整理了几种方法,大家可以看下. 导航栏透明 -(void)viewWillAppear:(BOOL)animated { //viewWillAppear中设置透明 [super viewWillAppear:animated]; [self.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetrics

Windows Phone 8.1开发中如何把自定义字体塞进应用里

或许,系统自带的字体不足以体现应用程序的魅力,对于表现极强的汉字来说,更是如此.这时候,我们就会想,要是能把网上下载的艺术字体塞到应用包中,那岂不美哉?那么,这可以实现吗?答案是Yes的. 接下来,阿拉就给大家分别演示WP 8.1两个开发框架中如何嵌入自定义字体. 为啥是两大框架?我们知道从7x到8.0的开发框架是Silverlight for Windows Phone,为了便于兼容和直接项目升级,在8.1中,微软的开发团队依然保留了这个框架:另外一个框架是从Win RT应用移植的API集,这

Android 开发中怎么使用自定义字体

  1.Android系统默认支持三种字体,分别为:"sans", "serif", "monospace 2.在Android中可以引入其他字体 . Android:layout_width="fill_parent" Android:layout_height="fill_parent" > Android:layout_marginRight="4px" Android:text=&q