您的位置:首页 > 产品设计 > UI/UE

iOS--UILabel字体默认宽度和高度

2016-03-30 12:17 507 查看
今天发现了UILabel的一个属性:intrinsicContentSize,这个属性能返回UILabel对象的内容宽高(1行文本)。

宽度

接着发现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)的数字宽度表:

小写字母宽度大写字母宽度
a9 9 A1113 11\frac{1}{3}
b1013 10\frac{1}{3} B11 11
c913 9\frac{1}{3} C12 12
d1013 10\frac{1}{3} D12 12
e913 9\frac{1}{3} E10 10
f6 6 F923 9\frac{2}{3}
g10 10 G1213 12\frac{1}{3}
h10 10 H1213 12\frac{1}{3}
i4 4 I413 4\frac{1}{3}
j4 4 J9 9
k9 9 K11 11
l4 4 L913 9\frac{1}{3}
m1423 14\frac{2}{3} M1423 14\frac{2}{3}
n923 9\frac{2}{3} N1213 12\frac{1}{3}
o923 9\frac{2}{3} O13 13
p10 10 P1023 10\frac{2}{3}
q10 10 Q13 13
r613 6\frac{1}{3} R11 11
s823 8\frac{2}{3} S1023 10\frac{2}{3}
t6 6 T1023 10\frac{2}{3}
u923 9\frac{2}{3} U1213 12\frac{1}{3}
v9 9 V1113 11\frac{1}{3}
w13 13 W1613 16\frac{1}{3}
x823 8\frac{2}{3} X1113 11\frac{1}{3}
y9 9 Y11 11
z9 9 Z11 11

高度

UILabel的高度就貌似没有线性关系了:

字体大小高度
1012 12
111313 13\frac{1}{3}
121413 14\frac{1}{3}
131523 15\frac{2}{3}
1417 17
1518 18
161913 19\frac{1}{3}
172013 20\frac{1}{3}
182123 21\frac{2}{3}
1923 23
2024 24
212513 25\frac{1}{3}
222613 26\frac{1}{3}
232723 27\frac{2}{3}
242823 28\frac{2}{3}
2530 30
263113 31\frac{1}{3}
273213 32\frac{1}{3}
283323 33\frac{2}{3}
293423 34\frac{2}{3}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: