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;