当前位置: 首页 > 面试题库 >

UICollectionView的动态单元格宽度取决于标签宽度

仉昂熙
2023-03-14
问题内容

我有一个UICollectionView,它从包含标签的可重用单元格加载单元格。数组为该标签提供内容。我可以使用sizeToFit轻松根据内容宽度调整标签宽度的大小。但是我无法制作适合标签的单元格。

这是代码

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    arrayOfStats =  @[@"time:",@"2",@"items:",@"10",@"difficulty:",@"hard",@"category:",@"main"];
}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:     (NSInteger)section{
    return [arrayOfStats count];
}

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{

    return CGSizeMake(??????????);
}

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{

    return 1;
}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{

    Cell *cell = (Cell *) [collectionView dequeueReusableCellWithReuseIdentifier:@"qw" forIndexPath:indexPath];
    cell.myLabel.text = [NSString stringWithFormat:@"%@",[arrayOfStats objectAtIndex:indexPath.item]];
    // make label width depend on text width
    [cell.myLabel sizeToFit];

    //get the width and height of the label (CGSize contains two parameters: width and height)
    CGSize labelSize = cell.myLbale.frame.size;

    NSLog(@"\n width  = %f height = %f", labelSize.width,labelSize.height);

    return cell;
}

问题答案:

作为sizeForItemAtIndexPath回报,文字大小

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{

    return [(NSString*)[arrayOfStats objectAtIndex:indexPath.row] sizeWithAttributes:NULL];
}


 类似资料:
  • 我需要显示一组具有不同高度的collectionViewCells。视图太复杂,我不想手动计算预期的高度。我想强制自动布局来计算单元格高度 在之外调用会破坏ColltionView并导致其崩溃 另一个问题是单元格不在单独的xib中,所以我无法手动实例化临时单元格并将其用于高度计算。 对此有什么解决办法吗? 编辑: 一旦被调用,就会发生崩溃。如果我不调用该方法并返回大小,则一切正常,单元格显示为没有

  • 问题内容: 我正在将AutoSizing单元格与Autolayout和UICollectionView一起使用。 我可以在单元初始化的代码中指定约束: 但是,由于该单元尚未添加到中,该应用程序崩溃了。 问题 在该阶段的生命周期,可以添加一个约束的? 有没有作出任何默认方式的equal to the of thewithout accessing an instance of or? 编辑 这个问题

  • 问题内容: 许多人仍然使用表格来布局控件,数据等。-流行的jqGrid就是一个例子。但是,发生了一些我似乎无法理解的魔术(它的桌子大声喊叫,可能有多少魔术?) 如何设置表的列宽并使它像jqGrid那样遵守!?如果我尝试复制此内容,即使我设置了every ,只要这些单元格之一的内容大于20px,该单元格就会展开! 有什么想法或见解吗? 问题答案: 您可以尝试对所有行使用标签管理表样式,但是您需要在或

  • 我从CoreData中获取对象,如下所示 并显示它: 如何在 中获得单元格的正确高度以返回它

  • 问题内容: 许多人仍然使用表格来布局控件,数据等。-流行的jqGrid就是一个例子。但是,发生了一些我似乎无法理解的魔术(它的桌子大声喊叫,可能会有多少魔术?) 如何设置表的列宽并使它像jqGrid那样遵守!?如果我尝试复制此内容,即使我设置了every ,只要这些单元格之一的内容大于20px,该单元格就会展开! 有什么想法或见解吗? 问题答案: 您可以尝试对所有行使用标签管理表样式,但是您需要在

  • 我正在使用带有Autolayout和UICollectionView的自动调整单元格。 我可以在单元初始化代码中指定约束: 但是,应用会崩溃,因为单元格尚未添加到。 问题 > 在生命周期的哪个阶段,可以添加具有 的< code>width集合视图< code >的widthUIScreenUIWindow '的实例吗? 编辑问题不是重复的,因为它不是关于如何使用自动调整单元格大小功能,而是关于在使