UICollection视图单元格带有大文本问题

时间:2018-11-29 10:00:48

标签: ios swift autoresize

我有一个带有说明(UILabel)的单元格,说明后有两个按钮,我用它来获取说明文字的高度

    let constraintRect = CGSize(width: maxWidth, height: .greatestFiniteMagnitude)
    let boundingBox = self.boundingRect(with: constraintRect, options: [.usesLineFragmentOrigin, .usesFontLeading], attributes: [NSAttributedStringKey.font: font], context: nil)

    return ceil(boundingBox.height)

但是问题是当我对带有巨大描述单元的按钮执行任何操作时,动作没有被触发,这是一个非常烦人的问题,尝试了很多解决方案,但没有任何帮助?

这是我设置单元格高度的地方

 override func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {


    if self.items.count < 1 {
        return CGSize(width: (self.view.bounds.width - 16), height: 200)
    }
    if indexPath.item < self.items.count {
        let item = self.items[indexPath.item]
       var h = CGFloat(0)
        h = item["description"].stringValue.height(with: (self.collectionView.bounds.width - 44), font: UIFont(name: "Helvetica", size: self.contentLabelFontSize)!)
        self.descriptionHeight = h
        if item["images"].isEmpty == false {
            if item["images"][0]["original"].stringValue != "" {
                let hi = 300
                let im_h = CGFloat(hi)
                    h += im_h
            }
        }

        if self.type == "events" {
            h += 260
        }
        else if item["type"].stringValue == "event" {
            h += 250
        }
        else {

            h += 170
        }
        let size = CGSize(width: (self.view.bounds.width - 16), height: h)
        return size
    }
    return CGSize(width: (self.view.bounds.width - 16), height: 50)
}

这是在PostCell类上设置标签高度的地方:

  self.contentLabel.frame = CGRect(x: 10, y: 110, width: (self.bounds.width - 20), height: (self.bounds.height - self.imageHeight - 170))

0 个答案:

没有答案