iOS中UIcollectionviewCell的动态宽度?

Posted

技术标签:

【中文标题】iOS中UIcollectionviewCell的动态宽度?【英文标题】:Dynamic width of UIcollectionviewCell in iOS? 【发布时间】: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;试试这个 【参考方案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

以上是关于iOS中UIcollectionviewCell的动态宽度?的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionViewCell 在 iOS 8 中消失

如何在 iOS 中使用 Storyboard 创建自定义 UICollectionViewCell?

IOS:在其内容中围绕 uicollectionViewCell 剪辑的角落

Xamarin iOS:从情节提要中的 UICollectionViewCell 获取信息

iOS swift UICollectionviewcell 快照错误

iOS 14 UICollectionViewCell 相关