我正在做一个项目,我必须在代表人体的图像上的特定区域中绘制点。在Interface Builder中,我设置了一个容器UIView,它占据了主视图的大部分垂直中心。在那个容器视图中,我放置了一个 UIImageView 并在 IB 中设置了图形。图形比 UIImageView 和容器 UIView 都大得多,更具体地说,它更高。UIImageView 的 ContentMode 设置为 AspectFit,因为我希望图像不显示为大于容器。
该代码创建了几个 CGRect 实例,这些实例是用户点击有意义的区域。当用户点击容器视图时,代码用于确定该点是否在某个区域内,如果是,则在该区域的中心绘制一个点。
问题是当我在某些模拟器上运行应用程序时,区域矩形不在图像上的正确位置。例如,当我在 iPhone X 上运行应用程序时,头部的矩形区域看起来不错。当我在 iPhone XR 上运行应用程序时,矩形区域位于头部左侧。
我正在使用坐标来定义区域矩形,这些矩形基于例如人头在图像中的位置。我觉得这不是正确的方法,因为图像的 ContentMode 的 AspectFit 很可能导致图像被缩放以保持纵横比。
底线是,无论图像如何缩放,我都希望矩形位于正确的位置和大小。不确定我的做法是否有意义,所以希望有一些建议可以提供更好的方法来做到这一点。
更新 1:UIImageView 固定在周围的 UIView 上,因此它的宽度和高度与容器一样大。由于图像比 UIImageView 更瘦,图像显示在它的中心。在附加的图像中,紫色背景是 UIImageView 显示最上面的 UIView 的背景颜色。
更新 2:我检查了宽度和高度的比例,发现它们不同。宽度比例因子为 1.36565656565,高度比例因子为 2.104。我尝试了使用 Sweeper 给出的两个比例因子给出的公式,但没有运气。