gpt4 book ai didi

ios - 根据标签大小调整 UICollectionViewCell 的大小

转载 作者:可可西里 更新时间:2023-11-01 04:09:41 24 4
gpt4 key购买 nike

我有一个 UICollectionView,它将包含带有不同大小标签的单元格。我正在尝试根据标签的大小调整单元格的大小。但是,我创建单元格的 sizeForItemAtIndexPath 似乎在我设置标签的 cellForItemAtIndexPath 之前被调用。我可以在这里做什么?

- (void)getLabelSize:(UILabel *)label {
float widthIs = [label.text boundingRectWithSize:label.frame.size options:NSStringDrawingUsesLineFragmentOrigin attributes:@{ NSFontAttributeName:label.font } context:nil].size.width;

width = widthIs;
}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
// Configure the cell
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];
UILabel *label = (UILabel *)[cell viewWithTag:1000];
label.text = @"This is pretty long";
[label sizeToFit];
[self getLabelSize:label];
NSLog([NSString stringWithFormat:@"%f", width]);
cell.backgroundColor = [UIColor whiteColor];

return cell;
}

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
return CGSizeMake(width, 50);
}

最佳答案

swift 中,我计算了标签的文本大小并根据它更新了单元格大小:

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


let size: CGSize = keywordArray[indexPath.row].size(attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 14.0)])
return CGSize(width: size.width + 45.0, height: keywordsCollectionView.bounds.size.height)
}

因为我有一个额外的按钮和填充,所以我计算出额外的值是 45.0

关于ios - 根据标签大小调整 UICollectionViewCell 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28409390/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com