Commit c805e4af authored by Steven杜宇's avatar Steven杜宇

// 计算collecitonView高度

parent ced9f2e8
......@@ -13,6 +13,7 @@ class YHInterestTopicLayout: UICollectionViewFlowLayout {
var dataSource:[String] = []
weak var layoutDelegate: UICollectionViewDelegateFlowLayout? = nil
var interItemSpacing: CGFloat = 12.0 // 相邻单元格之间的水平间距
let collectionViewWidth = KScreenWidth-16.0*4
override func prepare() {
super.prepare()
self.minimumInteritemSpacing = 12
......@@ -35,7 +36,7 @@ class YHInterestTopicLayout: UICollectionViewFlowLayout {
let originX = prevLayout.frame.maxX
//如果当 (上一个cell的最右边X + 我们想要的间距 + 当前cell的宽度 + 区边距) 依然在contentSize中 (小于屏幕宽度),我们改变当前cell的原点位置
//判断 当前cell的 maxX 是否超出屏幕
if((CGFloat(originX) + CGFloat(maximumSpacing) + currentLayout.frame.size.width) + self.sectionInset.right < self.collectionViewContentSize.width) {
if((CGFloat(originX) + CGFloat(maximumSpacing) + currentLayout.frame.size.width) + self.sectionInset.right < self.collectionViewWidth) {
var frame = currentLayout.frame
frame.origin.x = CGFloat(originX) + CGFloat(maximumSpacing)
currentLayout.frame = frame
......@@ -53,9 +54,8 @@ class YHInterestTopicLayout: UICollectionViewFlowLayout {
override var collectionViewContentSize: CGSize {
get {
let width = self.collectionView?.width ?? 0.0
let height = self.calculateHeight()
return CGSize(width: width, height: height)
return CGSize(width: self.collectionViewWidth, height: height)
}
}
......@@ -79,13 +79,14 @@ class YHInterestTopicLayout: UICollectionViewFlowLayout {
height = itemHeight
} else {
let targetX = currentX + self.minimumInteritemSpacing + size.width
if targetX <= self.collectionView!.width {
if targetX <= self.collectionViewWidth {
currentX = targetX
} else {
currentX = 0
currentX = size.width
height += self.minimumLineSpacing + itemHeight
}
}
printLog("calcaulte: \(height)")
}
}
return height
......
......@@ -64,26 +64,34 @@ class YHMyInterestTopicCell: UITableViewCell {
self.collectionView.isHidden = !isShowList
self.detailLabel.isHidden = isShowList
self.topicArr.removeAll()
if self.userModel.topics.count > 0 {
self.topicArr.append(contentsOf: self.userModel.topics)
}
self.layout.dataSource = self.topicArr
self.layout.invalidateLayout()
self.collectionView.reloadData()
let height = self.layout.collectionViewContentSize.height
printLog("ABC: \(height)")
if isShowList {
self.topicArr.removeAll()
if self.userModel.topics.count > 0 {
self.topicArr.append(contentsOf: self.userModel.topics)
self.collectionView.snp.remakeConstraints { make in
make.height.equalTo(height)
make.left.equalTo(16)
make.right.equalTo(-16)
make.bottom.equalTo(-16)
make.top.equalTo(self.titleLabel.snp.bottom).offset(12)
}
self.layout.dataSource = self.topicArr
self.collectionView.reloadData {
let height = self.layout.collectionViewContentSize.height
printLog("ABC: \(height)")
self.collectionView.snp.remakeConstraints { make in
make.height.equalTo(height)
make.left.equalTo(16)
make.right.equalTo(-16)
make.bottom.equalTo(-16)
make.top.equalTo(self.titleLabel.snp.bottom).offset(12)
}
self.detailLabel.snp.remakeConstraints { make in
make.left.equalTo(16)
make.right.equalTo(-16)
make.top.equalTo(titleLabel.snp.bottom).offset(12)
}
self.setNeedsLayout()
self.layoutIfNeeded()
self.detailLabel.snp.removeConstraints()
} else {
......@@ -93,7 +101,12 @@ class YHMyInterestTopicCell: UITableViewCell {
make.bottom.equalTo(-16)
make.top.equalTo(titleLabel.snp.bottom).offset(12)
}
self.collectionView.snp.removeConstraints()
self.collectionView.snp.remakeConstraints { make in
make.height.equalTo(height)
make.left.equalTo(16)
make.right.equalTo(-16)
make.top.equalTo(self.titleLabel.snp.bottom).offset(12)
}
}
self.setNeedsLayout()
self.layoutIfNeeded()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment