How to set UICollectionViewDelegateFlowLayout?
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).