iOS 11 中 UITableViewCell 内的 UIImageView 的固定大小
Posted
技术标签:
【中文标题】iOS 11 中 UITableViewCell 内的 UIImageView 的固定大小【英文标题】:Fixed Size for UIImageView Inside UITableViewCell in iOS 11 【发布时间】:2017-09-23 14:02:36 【问题描述】:我正在使用 UIImageView、titleLabel 和描述标签附带的默认 UITableViewCell。我想为我的 UIImageView 设置一个固定大小,以便所有图像都具有相同的大小。目前看起来是这样的:
单元格的行高是“自动”,这里是 UITableView 的属性。
如何让我的 UIImageView 固定大小?
图片是异步下载的,如下图:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
let dish = self.dishes[indexPath.row]
cell.textLabel?.text = dish.title
cell.imageView?.image = UIImage(named: "placeholder")
cell.detailTextLabel?.text = dish.description
cell.imageView?.setImageFor(url: URL(string: dish.imageURL)!) image in
cell.imageView?.image = image
cell.imageView?.translatesAutoresizingMaskIntoConstraints = false
cell.imageView?.widthAnchor.constraint(equalToConstant: 50)
cell.imageView?.heightAnchor.constraint(equalToConstant: 50)
cell.setNeedsLayout()
return cell
UIImageView+Additions.swift
func setImageFor(url :URL, completion: @escaping (UIImage) -> ())
DispatchQueue.global().async
let data = try? Data(contentsOf: url)
if let data = data
let image = UIImage(data: data)
DispatchQueue.main.async
completion(image!)
【问题讨论】:
尝试设置imageView.contentMode = .scaleAspectFit
。
我做了它什么也没做!
【参考方案1】:
您正在尝试在您的completion block handler
中更改您的UIImageView
的height anchor
和width anchor
。您不应该这样做,如果需要,请确保您正在更新 main thread
中的布局。
您的UIImageView
的top, bottom, leading, and trailing anchor
可能等于superView
,在您的情况下,它是tableViewCell
,并且您的UITableViewCell
s 具有自动高度。这些导致您的UIImageView
大小不等。
由于您使用的是界面生成器,请尝试像这样布局您的UIImageView
:
如您所见,我的UIImageView
具有固定的宽度和高度。
最后,别忘了设置UIImageView
的contentMode
并将clipToBounds
勾选为是。
【讨论】:
谢谢! imageView.image 设置在主线程内。我已经粘贴了 setImageURL 的代码。出于某种原因,我无法对 UIImageView 设置任何约束,如图所示。一次,我再次使用默认 UITableViewCell 而不是创建原型单元格。也许这是 Xcode 9 中的一个错误。 你可以:)。单击您的 TableViewCell 并将其style
设置为自定义。试试看。
如果我自定义样式,那么我无法设置任何东西!没关系。我将创建一个自定义原型单元并使用它。
这取决于你。只是不要忘记将您的自定义 UITableViewCell 注册到您的 UITableView 并选择一个有用的答案:)
我已经完成了所有设置,但仍然在苦苦挣扎。由于我的图像具有垂直方向,因此尽管有固定的高度限制,它总是扩展到单元格的高度。 clipToBounds 成功了!以上是关于iOS 11 中 UITableViewCell 内的 UIImageView 的固定大小的主要内容,如果未能解决你的问题,请参考以下文章
iOS 11 中的 UITableViewCell 转换中断
自动滚动到放置在 UITableViewCell 内的 textView 光标在 iOS11 中不起作用
UITableViewCell Autolayout问题(iOS 11,Xcode 9.2)
UITableViewCell.textLable.text 没有出现在 xcode 9.2 的 iOS11.2 模拟器上