我有一个UICollextionView
,它目前计算出UILabel
的高度。每个标签都有自己的高度。我现在想对集合视图单元格做同样的事情。我似乎只能将它们全部改为相同。我该怎么办?感谢
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as ChatCellCollectionViewCell
cell.backgroundColor = UIColor.whiteColor()
cell.layer.cornerRadius = 10
cell.textLabel.text = "\(messageArray[indexPath.row])"
cell.nameLabel.text = "\(namesArray[indexPath.row])"
cell.textLabel.numberOfLines = 0
cell.textLabel.lineBreakMode = NSLineBreakMode.ByWordWrapping
frame = cell.textLabel.frame
cell.textLabel.sizeToFit()
frame.size.height = cell.textLabel.frame.size.height
cell.textLabel.frame = frame
return cell
}
答案 0 :(得分:1)
如果您正在使用Flow Layout,UICollectionViewDelegateFlowLayout
协议会有一个名为collectionView:layout:sizeForItemAtIndexPath:
的函数,您可以执行此操作。
答案 1 :(得分:0)
可以使用UICollectionViewFlowlayout完成,请参见此处:https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/CollectionViewPGforIOS/UsingtheFlowLayout/UsingtheFlowLayout.html
滚动到指定流程布局中项目的大小
答案 2 :(得分:0)
将此方法添加到视图控制器
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
CGFloat width=0.0;
CGFloat height=0.0;
if (IS_IPHONE_5){
width=90;
height=120;
}else if (IS_IPHONE_6){
width=107;
height=130;
}else if (IS_IPHONE_6_PLUS){
width=125;
height=150;
}else{
width=90;
height=120;
}
return CGSizeMake(width, height);
}
在设备检测位置您可以使用indexPath.row ..like
if (indexPath.row==0){
// Your Code
}
注意:它返回CGSize ..
我希望这个答案对你有所帮助。