【问题标题】:How to make square image view auto layout如何使方形图像视图自动布局
【发布时间】:2020-01-27 15:24:54
【问题描述】:

我有包含单个图像视图的单元格。它如何具有这样的约束:left(12)top(12)right(12)bot(12)。

没关系,但我想要的是,保存偏移量(也许摆脱底部偏移量),但添加像高度 = 宽度这样的约束,所以图像将始终是方形的,但是,将始终具有左上右偏移量等于 12。

在我添加高度 = 宽度约束图像后没有显示。 图片是从网上下载的,所以不能立即使用。 如何解决?

【问题讨论】:

  • 如果你想要使用 IB 的方形视图,这是我去年三月给出的答案(所以它是 Swift 3)以及相关的 Git 存储库。 stackoverflow.com/questions/42860324/… 它的技巧 (a) 设置 1:1 的纵横比,以及 (2) 为具有不同优先级的边距高度/宽度偏移设置 两个 约束。
  • 单独评论:如果您的问题是如何在代码中制作方形视图,我可以使用布局锚点为您提供单独的 Swift 4 答案。这基本上是同一类型的策略。

标签: ios swift autolayout


【解决方案1】:

第 1 步: 选择 View 并添加 4 个约束:TopLeftRightAspect Ratio

第2步:选择视图的aspect constraint(例如:-X : Y

第 3 步:乘数设置为1:1,一切就绪!!!

【讨论】:

  • 不幸的是它不起作用,它在单元格应该在的位置显示“灰色”矩形,并且它说 - 仅警告一次:检测到约束模糊地建议 tableview 单元格的内容视图高度为零的情况.我们正在考虑意外折叠并改用标准高度。
  • 如果图像的高度超出 Superview 怎么办??
  • @Pawan 然后添加另一个约束,确保正方形的底部小于或等于父视图的底部
【解决方案2】:

您的限制似乎很好。 Roy 的回答也是正确的(尽管它在横向模式下效果不佳,因为图像视图会在屏幕之外绘制,因为它试图在保持顶部、左侧和右侧边距的同时使宽度与高度匹配)。但是你仍然会得到意想不到的结果,因为你已经设置了一个 ImageView 的约束,它通过下载来获取它的图像。因此,您的图像视图的内在内容大小由运行时图像的大小定义。

您可以在此处执行的操作是强制您的 imageview 不超过其界限。您只需在 Interface Builder 中勾选“Clip To Bounds”选项即可。

【讨论】:

    【解决方案3】:

    就我而言,我开始使用视图优先级和常量,并解决了我的问题。 约束优先级的默认值为 1000,您可以将一些约束值设置得较低,以获得您想要的视图设计。

    您也可以更改常量符号( == 、 = )的值来获得您想要的设计

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多