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 获取信息