UITableViewCell Height Issue

后端 未结 2 643
刺人心
刺人心 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: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

提交回复
热议问题