【问题标题】:UIImageView disappears when aspect ratio constraint applied应用宽高比约束时 UIImageView 消失
【发布时间】:2018-12-09 14:07:44
【问题描述】:

Xcode 9.3,运行 OS 10.13.4 的 MacBook Pro

当我在 IB 中向 UIView 添加纵横比约束时,视图不会在模拟器中呈现。为了找出它的去向,我记录了没有约束的相关框架坐标,然后出现了。坐标看起来相同,但请查看屏幕截图以了解差异。

没有限制:

self.view.center = (207.0, 368.0)
self.thumbView.center = (93.0, 207.5)
self.viewFinder.center = (187.5, 163.5)
self.view.frame = (0.0, 0.0, 414.0, 736.0)
self.thumbView.frame = (30.0, 174.0, 126.0, 67.0)
self.viewFinder.frame = (16.0, 75.0, 343.0, 177.0)

只有纵横比限制:

self.view.center = (207.0, 368.0)
self.thumbView.center = (93.0, 207.5)
self.viewFinder.center = (187.5, 163.5)
self.view.frame = (0.0, 0.0, 414.0, 736.0)
self.thumbView.frame = (30.0, 174.0, 126.0, 67.0)
self.viewFinder.frame = (16.0, 75.0, 343.0, 177.0)

如果您有任何想法,我们将不胜感激!

这是 IB 中的场景截图。大的UIImageView是viewFinder,小的是thumbView:

这是没有限制的样子:

这是我添加纵横比约束后的样子:

编辑 1

根据下面@Anton 的评论,我将viewFinder 底部和侧面的接近限制添加到thumbView。然而,这并没有产生任何变化——我仍然得到表明存在thumbView的坐标,但它仍然不可见。

【问题讨论】:

  • 您是通过代码还是在界面构建器中设置这些约束?如果首先 - 然后请显示代码。在其他情况下 - 检查界面生成器中是否有任何警告/错误

标签: ios uiimageview storyboard nslayoutconstraint


【解决方案1】:

简短的回答是:尝试将x 和y 位置的约束也添加到缩略图视图(例如将其'leading 和bottom 边缘与viewFinder 对齐)。您可以获得相同的帧,因为您在自动布局完成其工作之前检查它(例如在viewDidLoad 中)。还为该图像视图设置一些图像或为其中一个维度设置约束(没有这种约束,自动布局会尝试使用取决于UIImageView 内容的内在大小)。此外,您必须检查界面生成器是否有其他错误,因为它很可能需要为视图设置约束,您的 thumbView 取决于

如果您确实只有一个拇指视图约束及其纵横比约束,您可能会在界面生成器中收到一个错误,告诉您必须为该视图的x 和y 坐标设置约束。如果没有这样的约束,你会得到一个模棱两可的布局,这意味着如何设置视图的位置有很多变化。

虽然根本没有约束,但系统会将视图的frame 和autoresizing mask 转换为约束,以便您获得一组有效的约束来设置视图位置和大小,这就是视图可见的原因。由于您向视图添加了任何约束,因此您应该添加足够的约束以通过这些约束清楚地定义该视图的位置和大小。

【讨论】:

  • 非常感谢,安东。然而,事情并没有改变。请在问题底部查看我的编辑。
  • @rattletrap99 查看我的编辑 - 仅纵横比也不足以设置非零大小。希望有帮助
  • 我将尝试对我的约束进行相当大的修改,并会在之后报告。谢谢!
猜你喜欢
  • 2018-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-18
相关资源
最近更新 更多