Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set UICollectionViewDelegateFlowLayout?

People also ask

What is Uicollectionviewflowlayout?

A layout object that organizes items into a grid with optional header and footer views for each section.

What is Uicollectionviewdelegate?

The methods adopted by the object you use to manage user interactions with items in a collection view.

What is minimumInteritemSpacingForSectionAt?

collectionView(_:layout:minimumInteritemSpacingForSectionAt:) Asks the delegate for the spacing between successive items of a single row or column.


Just self.collectionView.delegate = self;. Note that UICollectionViewDelegateFlowLayout inherits from UICollectionViewDelegate.

I admit it caught me off guard at first.

Oh and this will only work if self.collectionView.collectionViewLayout is actually set to your flow layout. (or set with initWithFrame:collectionViewLayout:)


According to previous answer just example of use. It really not clear but I can show how it works:

@interface PrettyViewController()<UICollectionViewDelegateFlowLayout, UICollectionViewDataSource>
    //some code
@end

@implementation PrettyViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.collectionView.delegate = self;//bingo! right here
}

#pragma mark - UICollectionViewDelegateFlowLayout

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section {
    return CGSizeMake([[UIScreen mainScreen] bounds].size.width, 20.0);
}


@end

My two cents for macOS Mojave - Swift

(I've fallen here searching for NSCollectionView... I do know question was about UICollectionView..)

All said above (specifying delegate implies cell size, too) is correct for macOS, too.

NOTE: If You write:

class MyViewController:
    NSCollectionViewDelegate,
    NSCollectionViewDataSource,
    **NSCollectionViewDelegateFlowLayout** 
{

the method:

func collectionView(_ collectionView: NSCollectionView, 
                      layout collectionViewLayout: NSCollectionViewLayout, 
               sizeForItemAt indexPath: IndexPath) -> NSSize

will be called.

If removed, no delegate method will be called. (as class does not obey to the protocol).


Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!