【问题标题】:iOS Constraints of image view inside table view cell gets misplaced on scrolliOS 表格视图单元格内的图像视图约束在滚动时错位
【发布时间】:2017-03-19 11:51:29
【问题描述】:

表格视图单元格内的图像视图的约束在滚动时会变形。

约束在初始加载和视图上很好。一旦表格视图单元格离开视图并且我们向后滚动以获取它,图像视图就会移位。

这是单个 TableViewCell 的截图。地球图标从其原始位置(名称和名称左侧)错位,并与下面的文本重叠。

故事板中原型单元的屏幕截图

黑线显示故事板上添加的约束。 将 XCode 8.0 与 Swift 3 一起使用。 我对约束做错了什么?

【问题讨论】:

  • 我觉得你的草图很难理解,也许从你的故事板上截屏?
  • @YuchenZhong 我已更新问题以包含来自故事板的屏幕截图。

标签: ios swift


【解决方案1】:

您似乎缺少对图像视图的高度限制。如果您添加它,应该能够解决问题。

另外,也许也相关,您可以将图像视图的内容模式设置为宽高比吗?有时像这样:

ObjC

[self.imageView setContentMode:UIViewContentModeScaleAspectFit];

斯威夫特

self.imageView.contentMode = .scaleAspectFit

【讨论】:

  • 它没有用。我为 imageView 设置了约束高度=40。还将 contentMode 设置为 aspect fit。它要求将“细节”的垂直拥抱优先级更改为 252。我做到了。更新了框架。问题依旧。!
  • 我对自动布局知之甚少。它最初不起作用。我将添加的约束更改为新的视图控制器,然后删除约束,添加到以前的视图控制器,然后清理,然后运行。它得到了解决。仅供参考,我确实有高度属性 + 我也有 ">=" 作为标题。你能解释一下你的答案为什么会这样吗?
  • 我无法真正理解您对“将添加的约束更改为新的视图控制器然后删除约束、添加到以前的视图控制器然后清理...”做了什么。我建议您添加高度约束,因为您发布的屏幕截图中似乎缺少它。添加它应该会有所帮助,如果没有,嗯,我不知道......是的,一开始就让它们变得正确有点棘手。
  • 我认为重要的是从少量约束开始,然后逐渐添加更多。此外,在添加约束时了解每个约束也很重要,否则,以后只会一团糟,调试起来简直就是一场噩梦。
  • 为什么我建议你增加一个高度是因为,..你没有那个。对于图像视图,最好有一个。否则,如果您考虑一下,编译器无法真正判断它有多高。毕竟,桌子的高度有时是动态的。因此,如果您想掌握经验法则,请始终在表格视图单元格内为图像子视图添加高度和宽度约束。并且不要忘记设置contentMode
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-20
  • 1970-01-01
相关资源
最近更新 更多