CGRectIntegral有什么用法?

时间:2012-04-02 11:02:53

标签: iphone objective-c xcode

如何使用CGRectIntegral函数?我理解它的目的。

documentation并不清楚其确切用途。

3 个答案:

答案 0 :(得分:83)

CGRectIntegral将任何十进制值转换为整数等值
看图像可能是您可以理解的enter image description here

我该如何解决?

frame = CGRectIntegral(frame);

-OR -

myTextView.frame = CGRectIntegral(myTextView.frame);

请参阅此for more information of CGRectIntegral

答案 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仍将删除小数部分。