UITableViewCell Height Issue

后端 未结 2 641
刺人心
刺人心 2021-01-29 06:09

I\'m actually trying to make the image view height dynamic

I have tried UITableViewAutomaticDimension

in the cell class I have set the image\'s dyna

相关标签:
2条回答
  • 2021-01-29 06:38

    Well, you can't achieve the dynamic height of cell with UITableViewAutomaticDimension on the basis of image's constraints.

    BUT image's height and width can help you in this. There is a plenty of help regarding this issue is available in following answer:

    Dynamic UIImageView Size Within UITableView

    0 讨论(0)
  • 2021-01-29 06:45
    1. make sure you have set top-bottom constraints in storyboard.
    2. save the thumbnail image as data to local storage (I'm using core data)
    3. using the thumb image, calculate the aspect of the image
    4. customise the row height as you want in heightForRowAt method.
        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
        }
    
    

    if the thumb image is deleted in local storage then a placeholder image will be shown. you can customise the newHvariable to get the desired output

    0 讨论(0)
提交回复
热议问题