在 iOS 坐标系中,是以像素或其他特定单位为单位的给定位置



在我的应用程序中,用户可以手动将一些UIViews放置在UIImageView中。在处理结果时,我注意到 UIViews 位置 (X、Y) 或宽度甚至高度都是浮点数,所以我有一些浮点值,例如:100.22233

我不明白这怎么可能,因为我需要以像素为单位的这些值,有没有办法将这些值转换为像素?

谢谢。

UIView 属性(如 framebounds)以点为单位提供坐标,而不是以像素为单位。一点是非视网膜屏幕上的一个像素;一个点是视网膜屏幕上的四个像素(2x2 矩形)。

如果需要坐标的整数值,可以像这样截断浮点值:

CGFloat xLocation = (NSInteger)100.22233 + (CGFloat)0.0f;

如果您想舍入到最接近的整数(如您在注释中建议的那样,以 100.8 开头时为 101),您可以在四舍五入之前将 0.5 添加到浮点数中,如下所示:

CGFloat xLocation = (NSInteger)(100.8 + 0.5) + (CGFloat)0.0f;
<</div> div class="one_answers">

单位是点,在非视网膜中转换为 1pt == 1px,在视网膜中转换为 1pt == 2px。

如果需要整数值,可以使用如下CGRectIntegral

view.frame = CGRectIntegral(view.frame)

点与像素在 iOS 中,所有坐标值和距离都使用浮点值(以点为单位)指定。点的可测量大小因设备而异,在很大程度上无关紧要。关于点,要了解的主要事情是它们为绘图提供了固定的参考框架。

https://developer.apple.com/library/ios/documentation/windowsviews/conceptual/viewpg_iphoneos/WindowsandViews/WindowsandViews.html

https://developer.apple.com/library/ios/documentation/general/conceptual/Devpedia-CocoaApp/CoordinateSystem.html

您可以详细浏览上述文档

最新更新