CGRectIntegral 有啥用呢?
Posted
技术标签:
【中文标题】CGRectIntegral 有啥用呢?【英文标题】:CGRectIntegral what is the usage of it?CGRectIntegral 有什么用呢? 【发布时间】:2012-04-02 11:02:53 【问题描述】:如何使用 CGRectIntegral 函数?我明白它的目的。
documentation 的具体用途尚不清楚。
【问题讨论】:
【参考方案1】:CGRectIntegral 将任何十进制值转换为等效整数 看图可能你就明白了
我该如何解决?
frame = CGRectIntegral(frame);
-或-
myTextView.frame = CGRectIntegral(myTextView.frame);
看到这个for more information of CGRectIntegral
【讨论】:
左边的图像有点模糊,因为框架设置在像素边界上。所以原点类似于 20.5、8.5。 CGRectIntegral 将其捕捉回 20, 8。 如果您想在 ios 模拟器中以紫色突出显示模糊图像,请选择“调试”>“颜色未对齐的图像”。这样一来,您就不必四处眯着眼睛找出哪些东西是模糊的。 补充一点很重要:CGRectIntegral 用于填充/绘制像素缓冲区。描边形状以它们的坐标为中心,因此您实际上可能需要非整数(例如 1x 屏幕上的 0.5)坐标以使它们看起来清晰。更详细的解释见这里:orangejuiceliberationfront.com/…【参考方案2】:CGRectIntegral
方法用于创建整数 rect 。我的意思是假设如果您在应用程序中计算帧,您可能会在浮点数中获得帧值。
将浮点值设置为某些 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. */
【讨论】:
【参考方案3】:一种特殊用途是修复与屏幕像素不完全对齐的帧。
看到这个问题:UITextField blurred text
如果标签或文本字段在呈现到屏幕时具有未像素对齐的框架,则文本将显得模糊。如果您使用除法计算框架(例如在父视图中居中),就会发生这种情况。
CGRectIntegral
将删除帧的小数部分,从而解决此问题。但是请注意,对于视网膜显示,0.5 帧值是像素对齐的,但 CGRectIntgral 仍会删除小数部分。
【讨论】:
以上是关于CGRectIntegral 有啥用呢?的主要内容,如果未能解决你的问题,请参考以下文章