我们可以在iOS 6自动布局生成的帧上获得CGRectIntegral的效果吗?

lic*_*853 17 ios autolayout

iOS 6自动布局非常方便.但是,自动生成的帧可能具有非整数值.如何使用自动布局强制整数输出为最终帧位置和大小?

And*_*Ley 9

AutoLayout比您想象的要聪明.

虽然自动生成的帧确实具有小数值,但它们会被舍入以匹配设备的像素比率.在具有Retina显示器(2x)的设备上,允许0.5的分数.在较旧的设备上,似乎根本没有任何小数值.

这意味着您将始终获得像素完美的布局.

我花了很长时间来弄明白这一点.:)

  • 事实并非如此 - 我在非视网膜设备上创建了布局,其中生成的帧具有小数值,从而导致像素未对齐.像在容器中居中一样简单的东西. (3认同)

Tri*_*ops 3

我无法回答你的问题,除非你接受“否”作为答案。

\n\n

我在使用手动布局而不是自动布局时遇到了类似的问题。我的解决方案可能对某人有用。

\n\n

此代码将坐标舍入到屏幕比例。换句话说,在标准显示上为整数,在 Retina 上显示为一半 (0.5; 1; 1.5; \xe2\x80\xa6)。

\n\n
CGFloat roundToScreen(CGFloat value) {\n    CGFloat scale = [[UIScreen mainScreen] scale];\n    CGFloat result = round(value * scale) / scale;\n    // example value: 3.61\n    // on standard display: 4\n    // on Retina display: 3.5\n    return result;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

以下是CGRect,CGPoint和的一些辅助函数CGSizeGitHub 上的 Gist

\n