Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 计算UILabel的高度和宽度;使用ceil()或RONDF()的UIFont高度(用于行数)?_Ios_Objective C - Fatal编程技术网

Ios 计算UILabel的高度和宽度;使用ceil()或RONDF()的UIFont高度(用于行数)?

Ios 计算UILabel的高度和宽度;使用ceil()或RONDF()的UIFont高度(用于行数)?,ios,objective-c,Ios,Objective C,我记录了以下值: label.frame.size.height :18.000000, label.font.lineHeight: 17.895000 如果我使用roundf(),例如: 在ceil()中 但当手动计算时:答案是1.00586756 我想知道这两者之间什么是最好的和更可靠的。为什么每个人都在使用ceil()来确定UILabel的行数?如果行数超过限制,则行可以显示的每个字母都应该带到下一行,因此.005也很重要。文本的.005部分应该带到下一行。因此,最好使用ceil()而

我记录了以下值:

label.frame.size.height :18.000000, label.font.lineHeight: 17.895000
如果我使用roundf(),例如:

在ceil()中

但当手动计算时:答案是
1.00586756


我想知道这两者之间什么是最好的和更可靠的。为什么每个人都在使用
ceil()
来确定
UILabel
的行数?

如果行数超过限制,则行可以显示的每个字母都应该带到下一行,因此.005也很重要。文本的.005部分应该带到下一行。因此,最好使用ceil()而不是roundf()。在roundf()中,值只有在大于或等于其一半时才有效)

ceil()

C库函数ceil(x)返回大于或等于x的最小整数值


我仍然不明白为什么大多数人在计算行数时必须使用
ceil()
,因为
roundf()
更准确

但是当谈到计算线的数量时。。在我看来,“roundf()”确实更准确,但因为它的行数。。十进制值不重要

计算图像是什么:

54/17.895000=3.01760268

和numberOflines=
3

如果我们使用
roundf()
的话,答案也是
3

而如果
ceil()
已经是
4

因此,使用
floor()
或简单地将结果转换为
int
即可:

int result = (int)floor(answer);

//or

int result = (int)answer;
关于我的问题,我认为
roundf()
可以帮助我计算一般的行数


我正在创建一个类,该类将根据这些值计算基线数,并将被整个应用程序使用

对于
1.00586756
ceil
为您提供
2
,而
roundf
为您提供
1
。向下舍入给出的值太小。很抱歉我弄糊涂了,是不是字符/单词的宽度(取决于使用了什么类型的
NSLineBreakMode
)负责将文本传输到新行?如果单词/char超过标签的maxwidth,则会触发换行,对吗?即使如此,roundf()函数也无效。
ceil(label.frame.size.height / label.font.lineHeight) // answer: 2
int result = (int)floor(answer);

//or

int result = (int)answer;