如何使用CGRectIntegral函数?我理解它的目的。
documentation并不清楚其确切用途。
答案 0 :(得分:83)
CGRectIntegral将任何十进制值转换为整数等值
看图像可能是您可以理解的
我该如何解决?
frame = CGRectIntegral(frame);
-OR -
myTextView.frame = CGRectIntegral(myTextView.frame);
答案 1 :(得分:13)
CGRectIntegral
方法用于创建整数矩形。我的意思是假设你在app中计算帧数,你可能会得到float值的帧值。
将浮点值设置为某些UIElement(如UILabel
)会使文本看起来模糊。为避免这种情况,我们使用CGRectIntegral
。请查看下面的示例
NSLog(@"%@",NSStringFromCGRect( CGRectIntegral(CGRectMake(0, 15.6, 16.1, 20.2))));
这将打印,{0,15},{17,21}。
此解释可在头文件中找到。
/* Expand `rect' to the smallest rect containing it with integral origin and
size. */
答案 2 :(得分:7)
一个特殊用途是修复与屏幕上像素不完全对齐的帧。
请参阅此问题:UITextField blurred text
如果标签或文本字段的框架在渲染到屏幕时没有像素对齐,则文本将显得模糊。如果使用除法计算帧(例如将其置于父视图中心),则会发生这种情况。
CGRectIntegral
将删除框架的小数部分,解决此问题。但请注意,对于视网膜显示,.5帧值是像素对齐的,但CGRectIntgral仍将删除小数部分。