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
    

如果缩略图在本地存储中被删除,则会显示一个占位符图像。 您可以自定义newHvariable 以获得所需的输出

【讨论】:

以上是关于UITableViewCell 高度问题的主要内容,如果未能解决你的问题,请参考以下文章

如何增加UITableView分隔符高度?

UITableViewCell 中 UIButton 的 NSIndexPath

如何在 UITableViewCell 上使用 CAGradientLayers

自定义 UITableViewCell 创建了两次......让我发疯

UITableViewCell 使用 separatorInset 隐藏分隔符在 iOS 11 中失败

iOS - UITableViewCell 内的 UIScrollView 内的 UIView 未触发 UITapGestureRecognizer