UITableViewCell 高度问题
Posted
技术标签:
【中文标题】UITableViewCell 高度问题【英文标题】:UITableViewCell Height Issue 【发布时间】:2020-01-03 06:18:22 【问题描述】:我实际上是在尝试使图像视图高度动态化
我试过UITableViewAutomaticDimension
在单元格类中,我根据纵横约束设置了图像的动态高度
【问题讨论】:
你能告诉我们你迄今为止在代码和约束方面的尝试吗? 我已经尝试过 UITableViewAutomaticDimension 图像按预期显示动态高度,但单元格高度没有更新@Teetz 请发布您的代码 我想我们需要更多信息才能帮助您。显示一些你的 ViewController 的代码和你设置的一些约束。 我已经发布了代码。 【参考方案1】:嗯,UITableViewAutomaticDimension不能基于图像的约束来实现单元格的动态高度。
但是图像的高度和宽度可以帮助您。以下答案提供了有关此问题的大量帮助:
Dynamic UIImageView Size Within UITableView
【讨论】:
我的图像实际上是以预期的方式呈现的。我需要我的单元格是动态高度 在你的 cellForRow() 方法中,你为什么返回 UITableViewCell()?我认为您应该返回您的单元格实例,即单元格。 我的 cellforrow 中有多种细胞类型(仅发布了一个特定细胞的代码)【参考方案2】:-
确保您已在情节提要中设置上下约束。
将缩略图作为数据保存到本地存储(我使用的是核心数据)
使用拇指图像,计算图像的纵横比
在
heightForRowAt
方法中根据需要自定义行高。
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
let entity = self.fetchedResultController.object(at: indexPath as IndexPath) as! Message
var newh:CGFloat = 100.00
if let fileThumbnails = entity.file_thumbnails as? NSArray
if fileThumbnails.count != 0
fileThumbnails.map (thumbNail) in
newh = self.getImageHeight(image:UIImage(data: thumbNail as! Data)! , h: UIImage(data: thumbNail as! Data)!.size.height , w: UIImage(data: thumbNail as! Data)!.size.width)
if entity.fileStatus == "DeletedMedia"
newh = 100
if entity.fileStatus == nil
newh = 0.0
print ("newH " , newh)
return newh
func getImageHeight(image : UIImage, h : CGFloat, w : CGFloat) -> CGFloat
let aspect = image.size.width / image.size.height
var newH = (messagesTV.frame.size.width * 0.6) / aspect
// customise as you want in newH
if(newH > 500)
newH = 500
//maximum height 500
if(newH < 100)
newH = 100
//minimum height = 100
return newH
如果缩略图在本地存储中被删除,则会显示一个占位符图像。
您可以自定义newH
variable 以获得所需的输出
【讨论】:
以上是关于UITableViewCell 高度问题的主要内容,如果未能解决你的问题,请参考以下文章
UITableViewCell 中 UIButton 的 NSIndexPath
如何在 UITableViewCell 上使用 CAGradientLayers
自定义 UITableViewCell 创建了两次......让我发疯
UITableViewCell 使用 separatorInset 隐藏分隔符在 iOS 11 中失败
iOS - UITableViewCell 内的 UIScrollView 内的 UIView 未触发 UITapGestureRecognizer