繁体   English   中英

UICollectionView中的图像布局

[英]Layout of Images in UICollectionView

我试图在背景为书架的UICollectionView中布局杂志封面的集合。 我希望它的每个架子上有2个杂志,其余的当向下滚动时可以看到。 这是我的代码:

-(void)viewDidLoad {

      UINib *cellNib = [UINib nibWithNibName:@"NibCell" bundle:nil];

    [self.collectionView registerNib:cellNib forCellWithReuseIdentifier:@"cvCell"];
    self.collectionView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"shelves.png"]];
}
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
    return 1;
    NSLog(@"1");
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
       return [_allEntries count];
    NSLog(@"2");
}

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


     RSSEntry *entry = [_allEntries objectAtIndex:indexPath.row];


    static NSString *cellIdentifier = @"cvCell";

    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];

    UIImageView *titleLabel = (UIImageView *)[cell viewWithTag:100];
     UILabel *titleLabel2 = (UILabel *)[cell viewWithTag:200];

           NSString *thearticleImage = entry.articleImage;
               [titleLabel setImageWithURL:[NSURL URLWithString:entry.articleImage] placeholderImage:[UIImage imageNamed:@"icon@2x.png"]];


    //    [titleLabel2 setText:entry.articleTitle];






    return cell;
}

我正在使用XIB创建collectionView单元。

当只有2个问题时,它看起来不错,但是随着越来越多的问题被添加并且您不得不开始滚动,它们变得相当成功:

在此处输入图片说明在此处输入图片说明在此处输入图片说明

您对UICollectionViewCell的计算带有单元格之间的填充可能是错误的。 您可以使用图像大小播放,也可以通过编程设置单元格大小:

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

您也可以在Interface Builder中使用填充。

您还可以通过编程方式执行此操作:

UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
[flowLayout setItemSize:CGSizeMake(100, 200)];
[flowLayout setMinimumInteritemSpacing:10];
[flowLayout setMinimumLineSpacing:10];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM