【问题标题】:Make UIImageView fit width of screen but keep aspect ratio [swift]使 UIImageView 适合屏幕宽度但保持纵横比 [swift]
【发布时间】:2018-08-09 23:04:33
【问题描述】:

我正在尝试使用 tableView 构建一个简单的 tableview,其中显示了人们发布的图像列表以及他们的朋友添加的图像。

这是 TableViewCell 的子类,我使用堆栈视图进行布局。问题是我想展示照片而不拉伸它们——我希望它们保持原来的纵横比,但人们可以上传任何尺寸的图像。您在屏幕截图中看到图像被压扁了。

我注意到上传的 .jpeg 文件越大,单元格越长(我猜图像大小决定了固有高度?),但由于宽度不能改变,所以每个图像都被压扁不同。一张巨大的图片会显示得非常高,但宽度相同。

我尝试将图像设置为 Aspect Fit,但只有可见图像本身可以满足我的要求:适合宽度而不扭曲纵横比。但是,UIImageView 本身仍然非常高,并且将所有其他 UI 元素推开。

我一定是在这里遗漏了什么……应该不会那么难吧?

【问题讨论】:

  • 显示你用来布局单元格的代码,以及cellForRowAt的代码
  • 我同意米兰cell.imageView?.contentMode = .scaleAspectFit
  • @MilanNosáľ 我在情节提要中制作了界面,并在我的 cellForRowAt 中使用了它:let cell = tableView.dequeueReusableCell(withIdentifier: "PostContentCell", for: indexPath) 作为! PostTableViewCell cell.initializeData(thisPost: post) 返回单元格
  • 然后initializeData 代码

标签: ios swift uitableview user-interface interface-builder


【解决方案1】:

要将图像约束为纵横比,首先给它屏幕宽度,然后在 IB 中给它一个静态高度,并将该约束挂钩为 IBOutlet

并将其设置在 cellForRow 中

   cell.imageHeightcon.constant = imageRealHeight*imageWidthInIB/imageRealWidth

【讨论】:

  • 这解决了我的问题......主要是。唯一的问题是 IB 预览被破坏,这取决于我作为构建时间约束输入的内容。在运行时它很好。
  • 它可能坏了,因为单元格总是需要内容约束来适应它在 IB 中的当前高度
【解决方案2】:

您应该根据需要固定图像视图的大小。然后你应该使用方面来填充而不是方面来适应并在属性检查中选择选项clip to bounds

【讨论】:

  • 您好 Tiago,您能详细说明一下吗? “为您想要的任何东西固定图像视图的大小”是什么意思?我尝试仅使用宽高比拟合并使用剪辑到边界,最终裁剪了图像。好在它不再扭曲它,但我看不到整个画面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-17
  • 2014-01-02
  • 1970-01-01
  • 2016-04-01
  • 1970-01-01
  • 2018-06-21
  • 1970-01-01
相关资源
最近更新 更多