UIFont && UIFontDescriptor

66、iOS 字体与属性字符串全解析 本文详细解析了 iOS 开发中的字体处理与属性字符串应用。涵盖了字体描述符的使用、字体与描述符之间的转换、动态字体与系统字体的变体获取、字体特征探索、印刷变体访问、用户字体选择、字体添加方式以及属性字符串的创建与操作。结合制表位、段落样式和文本附件等技术,展示了如何实现丰富的文本展示效果,并提供了注意事项和综合示例帮助开发者更好地掌握 iOS 文本处理相关技能。 阅读详情

UIFont

先读一下 API 简单介绍

The UIFont class provides the interface for getting and setting font information. The class provides you with access to the font’s characteristics and also provides the system with access to the font’s glyph information, which is used during layout. You use font objects by passing them to methods that accept them as a parameter.

You do not create UIFont objects using the alloc and init methods. Instead, you use class methods of UIFont, such as preferredFontForTextStyle:, to look up and retrieve the desired font object. These methods check for an existing font object with the specified characteristics and return it if it exists. Otherwise, they create a new font object based on the desired font characteristics.

Font objects are immutable and so it is safe to use them from multiple threads in your app.

译文:

UIFont类提供了获取和设置字体的接口信息。类提供了访问字体的特点,也为系统提供了访问字体的字形信息,用于在布局。你使用字体对象通过他们接受他们作为参数的方法。

你不使用分配和init方法创建UIFont对象。相反,您使用UIFont类方法,如preferredFontForTextStyle:查找和检索所需的字体对象。这些方法检查现有字体对象指定的特色并返回它如果它存在。否则,他们创建一个新的字体对象基于所需的字体特征。

字体对象是不可变的,所以它的使用是安全的,它们在你的应用程序从多个线程。


UIFontDescriptor

UIFontDescriptor objects provide a mechanism to describe a font with a dictionary of attributes. This font descriptor can be used later to create or modify a UIFont object. Font descriptors can be archived and unarchived. Font descriptors have a font matching capability, so that you can partially describe a font by creating a font descriptor with, for example, just a family name. You can then find all the available fonts on the system with a matching family name using matchingFontDescriptorsWithMandatoryKeys:.

There are several ways to create a new UIFontDescriptor object. To take advantage of text styles and respect the user’s current content size category, use preferredFontDescriptorWithTextStyle:. You can also use alloc and initWithFontAttributes:, fontDescriptorWithFontAttributes:, fontDescriptorWithName:matrix:, or fontDescriptorWithName:size: to create a font descriptor based on either your custom attributes dictionary or on a specific font’s name and size. Alternatively you can use one of the fontDescriptor… instance methods (such as fontDescriptorWithFace:) to create a modified version of an existing descriptor (the receiver). The latter methods are useful if you have an existing descriptor and simply want to change one aspect.

All attributes in the attributes dictionary are optional.

译文:

UIFontDescriptor对象提供一种机制来描述字体属性的字典。可以使用此字体描述符后,创建或修改一个UIFont对象。字体描述符可以存档,从未归档。字体描述符有字体匹配功能,您可以通过创建一个部分描述的字体字体描述符,例如,只是一个姓。然后你可以找到系统上所有可用的字体匹配使用matchingFontDescriptorsWithMandatoryKeys姓:。

有几种方法可以创建一个新的UIFontDescriptor对象。利用文本风格和尊重用户的当前内容大小类别,使用preferredFontDescriptorWithTextStyle:。您还可以使用alloc,initWithFontAttributes:,fontDescriptorWithName:矩阵:fontDescriptorWithFontAttributes:或fontDescriptorWithName:大小:创建一个字体描述符根据您的自定义属性字典或特定的字体的名称和大小。或者你可以用一个fontDescriptor…实例方法(如fontDescriptorWithFace:)来创建一个修改版的现有描述符(接收器)。后者的方法是有用的,如果你有一个现有的描述符,只是想改变一个方面。

属性字典中的所有属性都是可选的。



例如:


    _centerLabel = [[UILabel alloc] initWithFrame:CGRectMake(115, 12, 85, 21)];

    _centerLabel.text = @"哈哈哈哈哈哈it's a test!~";

    [_centerLabel setFont:[UIFont fontWithName:@"Helvetica" size:17.0]];

    [self.view addSubview:_centerLabel];


下面两个函数创建字体:

+fontWithName:(NSString *)fontName   size:(CGFloat) fontSize   创建并且返回一个指定字体类型和大小的字体对象,fontName指定字体集的名字和风格(例如宋体,楷书等这一类型的),fontsize设置字体的大小。

-fontWithSize:返回字体的大小

上面我们提到我们需要设置字体集,在IOS系统中我们用到的字体包含一下几种 :

Font Family: American Typewriter( AmericanTypewriter,AmericanTypewriter-Bold)
Font Family: AppleGothic(AppleGothic)
Font Family: Arial(ArialMT,Arial-BoldMT,Arial-BoldItalicMT,Arial-ItalicMT)
Font Family: Arial Rounded MT Bold(ArialRoundedMTBold)
Font Family: Arial Unicode MS(ArialUnicodeMS)
Font Family: Courier(Courier,Courier-BoldOblique,Courier-Oblique,Courier-Bold)
Font Family: Courier New(CourierNewPS-BoldMT,CourierNewPS-ItalicMT,CourierNewPS-BoldItalicMT,CourierNewPSMT)
Font Family: DB LCD Temp (DBLCDTempBlack)
Font Family: Georgia( Georgia-Bold, Georgia,Georgia-BoldItalic,Georgia-Italic)
Font Family: Helvetica(Helvetica-Oblique,Helvetica-BoldOblique,Helvetica,Helvetica-Bold)            默认字体
Font Family: Helvetica Neue(HelveticaNeue,HelveticaNeue-Bold)
Font Family: Hiragino Kaku Gothic **** W3(HiraKakuProN-W3)
Font Family: Hiragino Kaku Gothic **** W6(HiraKakuProN-W6)
Font Family: Marker Felt( MarkerFelt-Thin)
Font Family: STHeiti J  (STHeitiJ-Medium,STHeitiJ-Light)
Font Family: STHeiti K( STHeitiK-Medium, STHeitiK-Light)
Font Family: STHeiti SC(STHeitiSC-Medium, STHeitiSC-Light)
Font Family: STHeiti TC(STHeitiTC-Light,STHeitiTC-Medium)
Font Family: Times New Roman(TimesNewRomanPSMT,TimesNewRomanPS-BoldMT, TimesNewRomanPS-BoldItalicMT, TimesNewRomanPS-ItalicMT)
Font Family: Trebuchet MS( TrebuchetMS-Italic,TrebuchetMS,Trebuchet-BoldItalic,TrebuchetMS-Bold)
Font Family: Verdana( Verdana-Bold,Verdana-BoldItalic, Verdana,Verdana-Italic)
Font Family: Zapfino( Zapfino)

+ (UIFont *)systemFontOfSize:(CGFloat)fontSize    使用标准的接口返回指定大小的字体对象。
+ (CGFloat)systemFontSize    返回标准的系统字体大小。
+ (UIFont *)boldSystemFontOfSize:(CGFloat)fontSize   返回字体对象使用了标准接口来指定字体大小附加黑体风格。

+ (CGFloat)buttonFontSize 返回按钮使用标准字体。

+ (NSArray *)familyNames  返回系统可用字体集名称的数组。一个NSString型数组对象。每一个元素包含了字型集名称。字型集的名称相当于字型的基础名称。如 Times New Roman.你可以输入返回的字符串到 fontNamesForFamilyName: 方法来取得可用的字型集的名称。然後你可以用这些恰当的名称去取得字体对象。

+ (NSArray *)fontNamesForFamilyName:(NSString *)familyName                      )familyName字体集的名称。使用 familyNames 方法取得系统中的一个字体集的名称。



华为、Cisco、H3C、中兴网络设备如何配置syslog日志采集 阅读详情

相关推荐

故障处理:Oracle一体机磁盘故障时磁盘组重平衡失败的故障处理

摘要: Oracle Exadata一体机出现磁盘故障案例,存储节点故障灯未亮但磁盘已产生大量坏块,导致重平衡失败。文章强调了一体机硬件巡检需检查6个关键维度:节点messages日志、存储cell告警日志、CellCLI日志、ASM告警日志、ILOM日志及服务器信号灯。故障分析显示硬盘物理故障导致磁盘组冗余受损,自动修复流程受阻。文中详细记录了通过CellCLI工具排查损坏磁盘的过程,并提供了完整的故障处理流程和命令输出。文章同步发布于微信公众号"IT民工的龙马人生"和博客网站(www

提供数据库技术支持(系统优化,故障处理,安装升级,数据恢复等) 1231

UIFontDescriptor

通过UIFontDescriptor来调节字体的样式和字体的大小。 普通默认的UIFontDescriptor样式为(lldb) po self.wordView.font.fontDescriptor UICTFontDescriptor <0x6040000aa380> = { NSCTFontUIUsageAttribute = CTFontRegularUsage; NSFontSizeA

More reading and learning to become excellent 1254

信创改造实战:SpringBoot项目迁移到宝兰德BES 9.5.5的完整避坑指南(附依赖与web.xml配置)

本文详细介绍了将SpringBoot项目迁移到宝兰德BES 9.5.5的完整流程,包括依赖改造、web.xml配置降级等关键步骤。通过实战案例和避坑指南,帮助开发者高效完成国产中间件适配,确保项目平稳运行。特别针对Tomcat依赖排除和BES适配器选择提供了专业建议。

weixin_30689307的博客 737

一文让你彻底了解iOS字体相关知识

写本文的契机主要是把自己整理的关于iOS字体方面的知识不断更新写在这篇博文中,用来自己以后查阅。   一、iOS原生字体展示 在label中选择字体的font,并把font由system改成custom后,就能在family中看到72种特殊字体。这些里面就有很炫的字体,但是全部是只针对英文数字,对中文无效。写了一个程序把所有的原生样式遍历出来展示可以达到如下效果。可以清楚地看到每个字体对应的...

weixin_34216196的博客 444

Apple CarPlay Certification Guide December 2022 解析V1.0

Apple CarPlay Certification Guide December 2022更新说明

m0_74450450的博客 703

GD32F303实战:用定时器4触发ADC2+DMA,实现10ms精准采样1024点的完整流程

本文详细介绍了在GD32F303微控制器上使用Timer4触发ADC2配合DMA传输,实现10ms精准采样1024点的完整方案。从硬件架构设计、时钟树配置到定时器参数计算,提供了完整的工程实现流程和常见问题排查方法,适用于工业传感器监测等高实时性场景。

weixin_29194693的博客 433

iOS文本布局探讨之二——关于TextKit框架中的字体描述

一、引言 UIFont是iOS开发中处理文本字体的类,关于UIFont的相关内容,以前的一篇博客有详细介绍,本片博客主要介绍关于动态字体的应用与字体描述类NSFontDescriptor的应用。 UIFont应用介绍:http://my.oschina.net/u/2340880/blog/397115。 二、iOS系统中的动态字体 ...

weixin_34144450的博客 257

Eclipse在Mac上报错JNI_CreateJavaVM?可能是你的JDK架构搞错了(附Adoptium JDK下载指南)

本文深入解析了Mac(尤其是Apple Silicon芯片)上Eclipse启动时出现“JNI_CreateJavaVM”错误的根本原因,即JDK架构(aarch64与x86_64)不匹配。文章提供了详细的诊断步骤,并推荐通过下载并配置Eclipse Adoptium提供的aarch64版本JDK来彻底解决问题,同时附上清晰的配置指南。

weixin_29065659的博客 321

iOS开发 Fonts

字体的正确设置在iOS的开发中非常的重要。

conpgy的专栏 2718

探索Vortex开源GPGPU:RISC-V SIMT架构(4-1),Execute SFU(1)

本文详细分析了Vortex RISC-V内核6级流水线中Execute阶段的SFU(特殊功能单元)模块。重点介绍了SFU的数据流结构,包含dispatch_unit、pe_switch、csr_unit、wctl_unit和gather_unit五个子模块。文章深入解析了warp控制指令wspawn和tmc的实现机制:wspawn用于激活指定数量的warp并设置新PC值,tmc则用于控制线程掩码和warp状态。通过C代码和汇编指令的对照分析,阐明了这些指令在并行计算中的关键作用,包括线程激活、状态切换和执行

weixin_55313207的博客 1363

用于多种无人机协作的群体智能算法:综合综述

随着无人机技术的快速高水平发展,将多架无人机作为自主控制的编队应用于复杂情况是一个新兴领域的代表之一。在实现自主控制的挑战中,碰撞避免、任务分配、路径规划和编队重构是关键功能。本文对各种经典的无人机群智能算法进行了系统的总结和分析。

erjia_的博客 1万+

CoreText基本用法介绍

转至 http://blog.youkuaiyun.com/fengsh998/article/details/8691823   API接口文档。 https://developer.apple.com/library/mac/#documentation/Carbon/Reference/CoreText_Framework_Ref/_index.html   CoreTex

Le_Wrynn的博客 912

图像超分辨率在医学影像中的应用:如何用深度学习提升CT/MRI图像质量

本文探讨了深度学习驱动的图像超分辨率技术在医学影像(如CT/MRI)质量提升中的应用。文章分析了医学图像超分辨率在提升诊断信息含量、平衡保真度与临床相关性方面的独特挑战,并详细介绍了如何针对3D体数据特点定制模型架构、设计病理感知损失函数,以及解决高质量配对数据稀缺的策略。通过实战案例,阐述了从数据模拟、模型训练到临床评估的完整流程,旨在为医学影像的清晰化与诊断精准化提供有效解决方案。

weixin_29063681的博客 523

Core Text 编程指南

介绍 原文链接: Core Text Programming Guide 重要:此文档不再更新,有关 Apple SDKs 的最新信息,访问 documentation website. Core Text 是一种用于处理字体和文本布局的底层高级技术,自 Mac OS X v10.5 和 iOS 3.2 开始引入,你可以从所有 iOS 及 OS X 的开发环境中使用其 API。 重要:Cor...

weixin_33948416的博客 538

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

UIFont-动态字体

转载自: iOS动态字体DynamicType的实现(1) iOS7新特性-dynamic type(动态字体)与font descriptor(字体描述符) 动态字体(Dynamic type)动态字体是iOS7中新增加的比较重要的特性之一,程序应该按照用户设定的字体大小和粗细来显示文本内容。分别在设置\通用\辅助功能和设置\通用\文字大小中可以设置文本在应用程序中显示的粗细和大小。 设置UIk

了凡 3315

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Swift UIFont使用

原著地址:http://www.cocoachina.com/ios/20170612/19491.html Swift -- UIKit 之 UIFont 一、简介 UIFont类提供了用于获取和设置字体信息的接口。类提供了访问字体的特点,还提供了访问,这是在布局过程中中使用的字体的字形信息系统。他们通过接受它们作为参数的方法,您可以使用字体对象。下面依据源码顺序,

leemboy的博客 2407

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

UIFontTextStyle 样式图

方便用的时候查表。

Eric's Blog 934

编程实现NSTextView中选择的文字切换粗体

这里和文字相关的,一般涉及到NSTextStorage(文本编辑)、NSFont(字体)和NSFontDescriptor(字体信息描述)、NSFontManager(字体管理器) 首先要textView(统一用它代表NSTextView的实例)得到选中的范围: NSArray *aArray = textView.selectedRanges; if(!aArray || aArray.count==0) { return; } NSRange selectedRange = [(NS.

随风动,心飞翔 531

IOS设置中文斜体

第一种方法:旋转字体  CGAffineTransform matrix = CGAffineTransformMake(1, 0, tanf(15 * (CGFloat)M_PI / 180), 1, 0, 0);      UIFontDescriptor *desc = [UIFontDescriptor fontDescriptorWithNa...

吾心所向的博客 1072

iOS之UIFont字体设置

https://www.jianshu.com/p/4835e2b408e5 http://blog.youkuaiyun.com/sunnyboy9/article/details/51241008 UIFont继承自NSObject,用于获取和设置字体信息的接口。 1.使用任意字体名来创建UIFont类实例: [objc] view plain copy + (UIF

代码解释生活 3802

iOS中文字体自定义

iOS中文字体自定义 //汉字字体倾斜 NSInteger number = 55;//倾斜值 CGAffineTransform matrix = CGAffineTransformMake(1, 0, tanf(number * (CGFloat)M_PI / 180), 1, 0, 0); UIFontDescriptor *desc = [UIFontDescriptor fontDescriptorWithName:[UIFont systemFontOfSize:17].fontNam

江湖两把刀的技术博客 2046

UIFont字体参考

UILabel设置字体: [label setFont:[UIFont fontWithName:@"ArialMT" size:12]];

zhangkongzhongyun的专栏 462

iOS swift 支持中文斜体的方法 自己整理

///参数为字体大小     func getItasicFont(font:CGFloat) -> UIFont { //设置倾斜角度           let matrix = CGAffineTransformMake(1, 0, CGFloat(tanf(15 * Float(M_PI) / 180)), 1, 0, 0) ///字体描述    

一位iOS同学的博客 1914

XCode10 swift4.2 适配遇到的坑

以下是2018年10月23日更新 经过大约一个月的时间的适配,项目正式使用XCode10(以下简称为10 or XC10)大部分库都升级为Swift4.2(以下简称为 4.2 or S4.2),下面是适配过程中遇到的一些坑。 1. Swift4、Swift4.2混编 如果你对项目是小的独立项目,完全可以全部升级为4.2,你可以略过第一条;如果你依赖了一些第三方的库,且没有升级4.2,你可以继续看这...

weixin_33966365的博客 490

ios unlabe 显示html,iOS UILabe及UIFont用法总结

初始化一个UILabel对象,并初始化大小UILabel* label = [[UILabelalloc]initWithFrame:CGRectMake(100,100,100,100)];设置显示的文字label.text=@"123";和字体相关的一个类,字号大小默认17@property(nonatomic,retain)UIFont*font;//7.0之后可用设置字体风格//...

weixin_33729566的博客 305

UIFont详解

UIFont继承自NSObject

逢个场,作个戏 9657
上一篇: Python docstrings
下一篇: UIMutableAtrributedString
FirstBloodFB
博客等级 码龄12年 7粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值