【发布时间】:2014-02-28 16:38:47
【问题描述】:
在我的应用程序中,用户可以手动将一些 UIViews 放置在 UIImageView 中。在处理结果时,我注意到 UIViews Location (X, Y) 或 Width 甚至 Height 都是浮点数,所以我有一些浮点值,例如:100.22233
我不明白这怎么可能,因为我需要将这些值以像素为单位,有没有办法将这些值转换为像素?
谢谢。
【问题讨论】:
-
你一定是看错了值
在我的应用程序中,用户可以手动将一些 UIViews 放置在 UIImageView 中。在处理结果时,我注意到 UIViews Location (X, Y) 或 Width 甚至 Height 都是浮点数,所以我有一些浮点值,例如:100.22233
我不明白这怎么可能,因为我需要将这些值以像素为单位,有没有办法将这些值转换为像素?
谢谢。
【问题讨论】:
frame 和 bounds 等 UIView 属性以点而不是像素为单位提供坐标。一点是非视网膜屏幕上的一个像素;一个点是视网膜屏幕上的四个像素(2x2 矩形)。
如果你想要坐标的整数值,你可以像这样截断浮点值:
CGFloat xLocation = (NSInteger)100.22233 + (CGFloat)0.0f;
如果您想要四舍五入到最接近的整数(如 cmets 中建议的那样,从 100.8 开始时为 101),您可以在四舍五入之前将 0.5 添加到浮点数,如下所示:
CGFloat xLocation = (NSInteger)(100.8 + 0.5) + (CGFloat)0.0f;
【讨论】:
单位是点,在非视网膜中转换为 1pt == 1px,在视网膜中转换为 1pt == 2px。
如果你想要整数值,你可以使用CGRectIntegral like:
view.frame = CGRectIntegral(view.frame)
【讨论】:
点与像素 在 iOS 中,所有坐标值和距离都使用浮点值指定,单位为点。点的可测量大小因设备而异,并且在很大程度上无关紧要。关于点的主要理解是它们为绘图提供了一个固定的参考框架。
你可以详细看一下上面的文档
【讨论】: