【问题标题】:Dynamic width of UIcollectionviewCell in iOS?iOS中UIcollectionviewCell的动态宽度?
【发布时间】:2016-12-15 05:27:27
【问题描述】:

我有一个应用程序,我将集合视图单元格的宽度设为:

- (UIEdgeInsets)collectionView:
(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
    return UIEdgeInsetsMake(20, 20,20,20);
}
- (CGSize)collectionView:(UICollectionView *)collectionView
                  layout:(UICollectionViewLayout *)collectionViewLayout
  sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    CGRect screenRect = collection.frame;
    CGFloat screenWidth = screenRect.size.width;
    float cellWidth = screenWidth / count;
}

但现在我想计算单元格的宽度需要依赖于一个参数,例如:

NSDictionary *dict=[arr objectAtIndex:indexPath.item];
    float duration=([[dict valueForKey:@"duration"]floatValue]);

如果持续时间是 45,那么它需要占用屏幕宽度的 45%,就像这样。当我尝试screenWidth * (duration/100.0)它看起来像这样时,任何人都可以帮我解决这个问题

【问题讨论】:

  • float cellWidth = screenWidth / duration;试试这个

标签: ios iphone uicollectionview uicollectionviewlayout


【解决方案1】:
    - (CGSize)collectionView:(UICollectionView *)collectionView
                      layout:(UICollectionViewLayout *)collectionViewLayout
      sizeForItemAtIndexPath:(NSIndexPath *)indexPath
    {
        CGRect screenRect = collection.frame;
        CGFloat screenWidth = screenRect.size.width;
        NSDictionary *dict=[arr objectAtIndex:indexPath.item];
        float duration=([[dict valueForKey:@"duration"]floatValue]);
        float cellWidth = duration / 100;

return CGSize(cellWidth, 60);
    }

它可以帮助你。

【讨论】:

    【解决方案2】:

    如果您的 collectionview 仅包含这些单元格,那么我建议您使用部分方法。 每个项目有多个部分,每个部分只有一行。通过这种方法,即使行大小为 10% 或更少,部分中也只会有一行,并且如您所愿。

    保持尺寸方法如下。

    NSDictionary *dict=[arr objectAtIndex:indexPath.item];
    float duration=([[dict valueForKey:@"duration"]floatValue]);
    float cellWidth = screenWidth * (duration/100.0);
    

    【讨论】:

    • 但它给了我相同宽度的连续 2 个项目@Dev_Tandel
    • 可以上传图片吗?
    • 有时会重叠。你能告诉我如何指定中间间距吗?
    • 我真的很想看看。有时可视化可以提供更好的想法
    • 希望你使用的是 FlowLayout
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    相关资源
    最近更新 更多