gpt4 book ai didi

swift - UITableViewCell 内 UIImageView 的动态大小

转载 作者:行者123 更新时间:2023-11-30 12:39:20 26 4
gpt4 key购买 nike

我在 Main.storyboard 中的 UITableViewCell 中定义了一个 UIImageView ,我希望它根据屏幕尺寸更改其宽度,并且我希望它更改高度,因此其长宽比与 UIImage 相同。

(例如 FB 应用程序中的新闻源 - 图像始终具有相同的宽度,但根据其原始宽高比不同的高度)。

我尝试了以下选项(基于其他SO问题):

  1. 设置尾随、前导、底部、顶部约束(全部 = 8)

    • (我的单元格根据其内容扩展其高度)
    • UITableView 中的一个 UIImageView 似乎具有正确的大小
    • 其他图像在图像上方和下方有大量空白
    • 这个空白似乎随着滚动而增加
  2. 同上,加上UIImageView.frame

    • 最常见的建议可能是更改 UIImageView.frame = CGRect(...)
    • ImageView 忽略了这些说明,并且所有单元格中的所有 ImageView 的大小仍然相同或
    • ImageView 在那里放置了一些随机高度,并且图像下方有大量空白
  3. 这有帮助:How do i scale an image correctly with fixed width and auto layout?

    let aRatio = (image?.size.width)! / (image?.size.height)!
    cell.myImageView?.contentMode = .scaleAspectFit
    let aRatioConstraint = NSLayoutConstraint(item: cell.myImageView,
    attribute: NSLayoutAttribute.width,
    relatedBy: NSLayoutRelation.equal,
    toItem: cell.myImageView,
    attribute: NSLayoutAttribute.height,
    multiplier: aRatio,
    constant: 0.0)
    cell.myImageView?.addConstraint(aRatioConstraint)
    • 它适用于很多图像,但有些图像仍然有上下空白 + 肖像(“高”图片)左右有空白。
    • 这两种情况都可以通过大力调用 tableView.reloadData() 直到出现正确的大小来解决。
    • 滚动 tableView 会使一切变得困惑。

我尝试了更多方法(例如,添加高度约束而不是直接操作框架),但一切都归结为两件事:奇怪的空白和/或滚动时的问题,因此需要触发tableView.reloadData () 一次又一次以获得所需的结果。

那么,推荐的方法是什么?

OT:这种行为(内容和属性的意外更改)相当常见,我在为图钉( map 中的注释标记)着色时也经历过这种情况。当我移动 map 以使图钉在屏幕上不可见并移回时,图钉改变了颜色(wtf)。也许有一个更通用的方法来处理所有这些类似的事情?

最佳答案

问题是我在单元启动时从网络下载图像,并在重复使用它们时再次下载图像。

仅下载一次单元格内容并存储它们就解决了问题。

另一种方法可以计算单元格内容高度并在 heightForRowAt indexPath 处定义它们。

关于swift - UITableViewCell 内 UIImageView 的动态大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42438615/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com