iOS--UILabel字体默认宽度和高度
2016-03-30 12:17
507 查看
今天发现了UILabel的一个属性:intrinsicContentSize,这个属性能返回UILabel对象的内容宽高(1行文本)。
中文
由于等宽,所以很好计算,包括全月角标点符号也是可以这么计算的,就是:每个中文文字的宽度 * 文字个数。文字个数就很好确定了,但每个中文文字的宽度是怎样确定的呢。通过一个小测试可知,中文文字的宽度是由UILabel的font属性确定的,font属性设置了多大号的字体,中文问题宽度就为多大号,即两者呈线性关系(PS:这个关系的前提是使用系统默认的字体。此外,若没有显式设置font属性的话,UILabel默认的字体大小为17),如:
数字
数字在系统默认字体内就不是等宽的了,所以宽度也会随着数字的不同而不同,下面是字体大小为系统默认字体大小(即17)的数字宽度表:
英文
英文在系统默认字体中也是不等宽的,所以宽度也是会随着字母的不同而不同,下面是字体大小为系统默认字体大小(即17)的数字宽度表:
宽度
接着发现UILabel对象的文字宽度是由文字的font属性和文字个数确定的,而且中文、英文、数字的宽度计算还不一样,我认为的一个原因是iOS默认的字体中,中文是等宽字体,而英文和数字并不是等宽字体。中文
由于等宽,所以很好计算,包括全月角标点符号也是可以这么计算的,就是:每个中文文字的宽度 * 文字个数。文字个数就很好确定了,但每个中文文字的宽度是怎样确定的呢。通过一个小测试可知,中文文字的宽度是由UILabel的font属性确定的,font属性设置了多大号的字体,中文问题宽度就为多大号,即两者呈线性关系(PS:这个关系的前提是使用系统默认的字体。此外,若没有显式设置font属性的话,UILabel默认的字体大小为17),如:
label.font = [UIFont systemFontOfSize:12]; // 每个中文字宽度就为12 label.font = [UIFont systemFontOfSize:17]; // 系统默认字体大小,每个中文文字宽度为17 label.font = [UIFont systemFontOfSize:20]; // 每个中文文字宽度为20
数字
数字在系统默认字体内就不是等宽的了,所以宽度也会随着数字的不同而不同,下面是字体大小为系统默认字体大小(即17)的数字宽度表:
数字 | 宽度 |
---|---|
0 0 | 1013 10\frac{1}{3} |
1 1 | 713 7\frac{1}{3} |
2 2 | 10 10 |
3 3 | 1013 10\frac{1}{3} |
4 4 | 1023 10\frac{2}{3} |
5 5 | 1013 10\frac{1}{3} |
6 6 | 1023 10\frac{2}{3} |
7 7 | 913 9\frac{1}{3} |
8 8 | 1023 10\frac{2}{3} |
9 9 | 1023 10\frac{2}{3} |
英文在系统默认字体中也是不等宽的,所以宽度也是会随着字母的不同而不同,下面是字体大小为系统默认字体大小(即17)的数字宽度表:
小写字母 | 宽度 | 大写字母 | 宽度 |
---|---|---|---|
a | 9 9 | A | 1113 11\frac{1}{3} |
b | 1013 10\frac{1}{3} | B | 11 11 |
c | 913 9\frac{1}{3} | C | 12 12 |
d | 1013 10\frac{1}{3} | D | 12 12 |
e | 913 9\frac{1}{3} | E | 10 10 |
f | 6 6 | F | 923 9\frac{2}{3} |
g | 10 10 | G | 1213 12\frac{1}{3} |
h | 10 10 | H | 1213 12\frac{1}{3} |
i | 4 4 | I | 413 4\frac{1}{3} |
j | 4 4 | J | 9 9 |
k | 9 9 | K | 11 11 |
l | 4 4 | L | 913 9\frac{1}{3} |
m | 1423 14\frac{2}{3} | M | 1423 14\frac{2}{3} |
n | 923 9\frac{2}{3} | N | 1213 12\frac{1}{3} |
o | 923 9\frac{2}{3} | O | 13 13 |
p | 10 10 | P | 1023 10\frac{2}{3} |
q | 10 10 | Q | 13 13 |
r | 613 6\frac{1}{3} | R | 11 11 |
s | 823 8\frac{2}{3} | S | 1023 10\frac{2}{3} |
t | 6 6 | T | 1023 10\frac{2}{3} |
u | 923 9\frac{2}{3} | U | 1213 12\frac{1}{3} |
v | 9 9 | V | 1113 11\frac{1}{3} |
w | 13 13 | W | 1613 16\frac{1}{3} |
x | 823 8\frac{2}{3} | X | 1113 11\frac{1}{3} |
y | 9 9 | Y | 11 11 |
z | 9 9 | Z | 11 11 |
高度
UILabel的高度就貌似没有线性关系了:字体大小 | 高度 |
---|---|
10 | 12 12 |
11 | 1313 13\frac{1}{3} |
12 | 1413 14\frac{1}{3} |
13 | 1523 15\frac{2}{3} |
14 | 17 17 |
15 | 18 18 |
16 | 1913 19\frac{1}{3} |
17 | 2013 20\frac{1}{3} |
18 | 2123 21\frac{2}{3} |
19 | 23 23 |
20 | 24 24 |
21 | 2513 25\frac{1}{3} |
22 | 2613 26\frac{1}{3} |
23 | 2723 27\frac{2}{3} |
24 | 2823 28\frac{2}{3} |
25 | 30 30 |
26 | 3113 31\frac{1}{3} |
27 | 3213 32\frac{1}{3} |
28 | 3323 33\frac{2}{3} |
29 | 3423 34\frac{2}{3} |
相关文章推荐
- 【NGUI】NGUI英文单词换行错误
- 1012 - Guilty Prince(无脑bfs)
- A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS
- 设置view的颜色渐变的方法
- UIimage 加载图片
- String的用法、StringBuffer和StringBuilder之间的区别
- 类与 对象 概念 break continue
- uestc1139菲波拉契数制升级版
- IOS开发-UI学习-沙盒机制&文件操作
- GUI 初体验与事件处理实战
- iOS UITextField或UITextView的内容是否为空
- xib系列---基本 UI 控件详解 (UISegmentedControl | UIImageView | UIProgressView | UISlider | UIAlertView )
- HiveJDBCInterface Integration with Pentaho or SQuirrel SQL Client
- UIlabel 设置圆角 自定义颜色 字体居中
- Error:Execution failed for ..dk\build-tools\23.0.2\aapt.exe'' finished with non-zero exit value 1错误
- TypedValue解析
- java中String、StringBuffer、StringBuilder的区别
- 软件版本GA,RC,alpha,beta,Build 含义
- ActionContext 、ValueStack 、Stack Context
- js 实现动态key value(JSON字符串注意事项:key和value都要用双引号,官网指定用双引号)