iOS 6 自动布局非常方便。但是,自动生成的帧可能具有非整数值。如何使用自动布局强制最终帧位置和大小的整数输出?
问问题
2276 次
2 回答
10
AutoLayout 比你想象的更聪明。
虽然自动生成的帧确实可以具有小数值,但它们会四舍五入以匹配设备的像素比率。在配备 Retina 显示屏 (2x) 的设备上,允许使用 0.5 的分数。在较旧的设备上,似乎根本没有任何小数值。
这意味着您将始终获得像素完美的布局。
不过,我花了很长时间才弄清楚这一点。:)
于 2013-05-06T14:28:03.667 回答
3
我无法回答您的问题,除非您接受no作为答案。
我在使用手动布局时遇到了类似的问题,而不是使用自动布局。我的解决方案可能对某人有用。
此代码会将坐标四舍五入到屏幕比例。换句话说,在标准显示上显示为整数,在 Retina 上显示为一半 (0.5; 1; 1.5; ...)。
CGFloat roundToScreen(CGFloat value) {
CGFloat scale = [[UIScreen mainScreen] scale];
CGFloat result = round(value * scale) / scale;
// example value: 3.61
// on standard display: 4
// on Retina display: 3.5
return result;
}
以下是CGRect
,CGPoint
和的一些辅助函数CGSize
:Gist on GitHub
于 2013-04-29T17:51:31.297 回答