Uicollectionview在滚动时不更新标题

时间:2017-07-19 07:56:52

标签: ios swift uicollectionview uicollectionviewcell collectionview

CollectionView具有标题和自定义布局。 当我点击单元格时,有两种方法正常工作。 1)didSelectItemAt 2)viewforsupplementaryelementofkind 我单击单元格并scrollToItem到页面的开头。 无法动态检测标题中的detailPhotoStory大小。

enter image description here

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="myField" readonly="readonly" />

<button>Set value</button>

// viewForSupplementaryElementOfKind

var headerHeight: CGFloat = 0.0
var headerView: DetailCollectionReusableView?

// didSelectItemAt

func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String,at indexPath: IndexPath) ->UICollectionReusableView {
        if kind == UICollectionElementKindSectionHeader
        {

            headerView = collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionElementKindSectionHeader,
                                                                         withReuseIdentifier: "detailCollectionReusableView",
                                                                         for: indexPath) as? DetailCollectionReusableView

            headerView?.detailPhotoStory.text = PhotoItemArraySelected[indexPath.row].photoStory

            headerView?.setNeedsLayout()
            headerView?.layoutIfNeeded()
            headerHeight = 380
            headerHeight += (headerView?.detailPhotoStory.frame.height)!

            return headerView!
        }

        return UICollectionReusableView()
    }

1 个答案:

答案 0 :(得分:0)

您可以像这样创建String扩展名,并根据宽度和使用的字体使用它来获取标签高度。您可以使用返回的高度来指定单元格的高度。

extension String {
     func height(withConstrainedWidth width: CGFloat, font: UIFont) -> CGFloat {
         let constraintRect = CGSize(width: width, height: .greatestFiniteMagnitude)
         let boundingBox = self.boundingRect(with: constraintRect, options: .usesLineFragmentOrigin, attributes: [NSFontAttributeName: font], context: nil)

         return boundingBox.height
  }
}

来源为this ans。