【问题标题】:UIImageView cover entire UITableViewCell using aspect fillUIImageView 使用方面填充覆盖整个 UITableViewCell
【发布时间】:2016-05-10 11:02:02
【问题描述】:

在界面构建器中,我正在尝试创建一个原型单元格,其图像覆盖整个单元格,但它没有按预期运行。

正如您在我的界面构建器的以下屏幕截图中看到的那样,我有一个覆盖整个单元格的图像视图,并且被限制在单元格的每个边缘:

事实上,这就是我期望它在模拟器上的样子,但我得到了这个:

如您所见,它并没有一直固定到两侧,可能很难看到,但图像实际上延伸到单元格底部(如果您仔细观察,您可以看到分隔符穿透图像的底部。

这真的有问题,我真的不知道发生了什么。

【问题讨论】:

  • 所以你想说你不想有白线,因为我们可以在第二张图片(图像的左侧和右侧)上看到??还是我错了?
  • 正确。尽管 IB 表明它会并且约束常数为 -8,但它并没有一直延伸到单元格的两侧,并且它延伸到单元格的底部,这是我不想要的。
  • 如果您在第一张图片中看到左右约束(蓝色小线),我认为这是有问题的。按下底部的约束按钮,使左右约束为0。我觉得是这个问题,但如果你能多截图就更好了!
  • 使用 aspectFill,单元格的高度必须刚好 大到足以容纳整个单元格。在这种情况下,似乎约束设置不正确(或者您没有启用自我调整大小),这篇文章应该可以帮助您入门:stackoverflow.com/questions/18746929/…
  • @rigdonmr 在这种情况下,我认为在单元格的contentView 上打开clipToBounds 应该可以解决问题,是吗?至于heightForRowAtIndexPath,它很糟糕,因为它被调用了很多,因此会影响滚动性能,特别是如果它没有正确实现(即执行一些复杂的计算而不是尽可能快地返回),它会给你生涩的滚动性能。您可以在我在第一条评论中发布的链接中找到更详细的处理方法。

标签: ios swift uitableview uiimageview autolayout


【解决方案1】:

这是因为您正在设置对边距的约束

uiimageview 添加约束时。取消选中对边距的约束。

【讨论】:

    【解决方案2】:
    1. 似乎您的图像约束与单元格 contentView 边距有关。您可以禁用它,请参阅屏幕截图。确保常数为 0

    1. 如果您不希望方面填充的图像超出边界,则需要对单元格 contentView 或 imageView 执行剪辑子视图 (clipsToBounds)。否则,您应该使用 Aspect Fit 或 Scale To Fill,或手动进行数学运算

    【讨论】:

      【解决方案3】:

      我认为您不小心在代码或 Storyboard 中禁用了单元格的 Clip Subviews,默认情况下应该启用它。

      如果不是单元格,请检查它是 Content View

      顺便说一句,通过对 Cell 及其内容视图禁用 Clip Subviews,我设法重现了您的错误。

      【讨论】:

      • 但我不希望单元格为图像的高度,我希望图像为单元格的高度
      • 所以你想让 imageView 适合单元格的大小?
      【解决方案4】:

      也许在代码中的单元格内添加UIImageView

      func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
          //configure cell
          let imageView = UIImageView(frame: self.cell.frame)
          imageView.image = YOUR_IMAGE
          imageView.center = cell.center
          imageView.frame.size = cell.frame.size
          imageView.contentMode = .ScaleAspectFill
          cell.addSubview(imageView)
      }
      

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-23
        • 2015-05-17
        • 2022-08-15
        • 2014-03-27
        • 2012-08-20
        • 2021-09-06
        相关资源
        最近更新 更多