在UICollectionView中动态更改minimumLineSpacing

时间:2017-02-01 00:59:14

标签: ios objective-c

我尝试动态更改JavaLine.returnLineWithCommentAt(),具体取决于UICollectionViewCell的类型,但我找不到合适的解决方法。

我尝试通过委托minimumLineSpacing来做,但我只是希望它会传回- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section而不是部分。 NSIndexPath会解决我的问题,因为我可以将NSIndexPath传递给NSIndexPath.row并检查一下。

到目前为止,我唯一的方法是在上面的委托方法中检查可见单元格,然后以这种方式获取路径,但是为了调整NSArray而必须遍历单元格似乎非常昂贵。 / p>

有没有人对如何解决这个问题有任何想法?

2 个答案:

答案 0 :(得分:0)

在Interface Builder中设置插件,如下面的屏幕截图所示:

1

会导致类似这样的事情:

2

答案 1 :(得分:-1)

试用此代码

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"SETTING SIZE FOR ITEM AT INDEX %ld", (long)indexPath.row);
    CGSize mElementSize = CGSizeMake(104, 104);
    return mElementSize;
}

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
{
    return 10.0;
}

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section
{
    return 10.0;
}

-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [self.view endEditing:YES];
    return YES;
}

// Layout: Set Edges
- (UIEdgeInsets)collectionView:
    (UICollectionView *)collectionView layout: (UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
    // return UIEdgeInsetsMake(0,8,0,8);  // top, left, bottom, right
    return UIEdgeInsetsMake(20,20,20,20);  // top, left, bottom, right
}