首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们可以在iOS 6自动布局生成的框架上使用CGRectIntegral吗?

问我们可以在iOS 6自动布局生成的框架上使用CGRectIntegral吗?
EN

Stack Overflow用户
提问于 2012-12-01 06:25:30
回答 2查看 2.3K关注 0票数 18

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

EN

回答 2

Stack Overflow用户

发布于 2013-05-06 22:28:04

AutoLayout比你想象的要聪明。

虽然自动生成的帧可以具有小数值,但它们是四舍五入的,以匹配设备的像素比率。在配备Retina显示屏(2x)的设备上,允许分数为0.5。在较老的设备上,似乎根本没有任何小数值。

这意味着你将永远得到一个像素完美的布局。

我花了很长时间才弄明白这一点。:)

票数 10
EN

Stack Overflow用户

发布于 2013-04-30 01:51:31

我不能回答你的问题,除非你接受no作为答案。

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

这段代码会将坐标舍入到屏幕比例。换句话说,在标准显示上为整数,在视网膜上显示为一半(0.5;1;1.5;…)。

代码语言:javascript
复制
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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13654083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档