寻找 UIImageView UIImageView.center 的中心出乎意料的结果

Posted

技术标签:

【中文标题】寻找 UIImageView UIImageView.center 的中心出乎意料的结果【英文标题】:Finding the center of UIImageView UIImageView.center unexpected results 【发布时间】:2016-01-19 02:42:36 【问题描述】:

我有一个具有以下约束的 UIImageView:

身高等于 135 尾随空格至:SuperView = 0 领先空间:Superview = 0 顶部空间至:顶部布局 = 0

Xcode 7.2 Size Inspector 中 UIImageView 的宽度 = 600。

在我的UIViewController 中有一个通往 UIImageView 的出口:

@IBOutlet weak var heroImageView: UIImageView!

viewDidLoadheroImagveView.center 的值 = (300.0, 67.5)

但这不是图像的实际中心,300 位于 iPhone 5 模拟器中 UIImageView 的右侧。更像(x: 160.0, y: 67.5) 的东西是中心,虽然 x 不准确。

在 Xcode 7.2 中,我所有 UIViewControllers 的默认宽度都是 600 像素,我知道这不会是跨不同 Apple 设备的运行时渲染宽度,但为什么 UIImageView.center 不理解这一点?

如何获得UIImageView 的实际运行时中心?

【问题讨论】:

代替 viewDidLoad ,在 viewDidAppear / viewWillAppear 方法中计算中心 自动布局将在 viewDidLayoutSubviews 中完成计算 【参考方案1】:

在 viewDidLoad 处,你的 heroImageView 的宽度为 600。由于父视图的前导空间为 0,x 位置将为 0。因此,中心位于 300。

您需要删除尾随和前导约束并将它们替换为“水平中心”和宽度约束。

【讨论】:

以上是关于寻找 UIImageView UIImageView.center 的中心出乎意料的结果的主要内容,如果未能解决你的问题,请参考以下文章

在 tableView 单元格中显示和隐藏 UIImageView

Xcode 6.3.2 - iOS - 模棱两可的 UIImageView

如何在 Swift 中使用色调和一些文本向 UIImageView 添加叠加层?

在同一个 UIImageView 中加载多个图像会在显示新图像之前闪烁最后一个图像

寻找 UIImageView UIImageView.center 的中心出乎意料的结果

我可以将单个自定义单元格用于多个不同的单元格吗?