blob: 4f3f9aa148d41e9ba6866e091488ad1cd2de9ded [file]
/*
Copyright 2016-present the Material Components for iOS authors. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#import <UIKit/UIKit.h>
#import "MDCCollectionViewStyling.h"
@class MDCInkTouchController;
@class MDCInkView;
/** A delegate protocol which allows setting collection view cell styles. */
@protocol MDCCollectionViewStylingDelegate <NSObject>
@optional
#pragma mark - Styling
/**
Asks the delegate for the cell height at the specified collection view index path. The style
controller will make padding/insets adjustments to this value as needed depending on the cell
style and editing mode.
@param collectionView The collection view.
@param indexPath The item's index path.
@return The cell height at the specified index path.
*/
- (CGFloat)collectionView:(nonnull UICollectionView *)collectionView
cellHeightAtIndexPath:(nonnull NSIndexPath *)indexPath;
/**
Asks the delegate for the cell style at the specified collection view section index. All
remaining sections to have their cells styled per the styler @c cellStyle property.
@param collectionView The collection view.
@param section The collection view section.
@return The cell style to be used at the specified index.
*/
- (MDCCollectionViewCellStyle)collectionView:(nonnull UICollectionView *)collectionView
cellStyleForSection:(NSInteger)section;
/**
Asks the delegate for the cell background color at the specified collection view index path.
@param collectionView The collection view.
@param indexPath The item's index path.
@return The cell background color at the specified index path.
*/
- (nullable UIColor *)collectionView:(nonnull UICollectionView *)collectionView
cellBackgroundColorAtIndexPath:(nonnull NSIndexPath *)indexPath;
/**
Asks the delegate whether the specified item should hide its background image/shadowing.
@param collectionView The collection view.
@param indexPath The item's index path.
@return If the item background should be hidden at the specified index path.
*/
- (BOOL)collectionView:(nonnull UICollectionView *)collectionView
shouldHideItemBackgroundAtIndexPath:(nonnull NSIndexPath *)indexPath;
/**
Asks the delegate whether the specified header should hide its background image/shadowing.
@param collectionView The collection view.
@param section The collection view section.
@return If the header background should be hidden at the specified section.
*/
- (BOOL)collectionView:(nonnull UICollectionView *)collectionView
shouldHideHeaderBackgroundForSection:(NSInteger)section;
/**
Asks the delegate whether the specified footer should hide its background image/shadowing.
@param collectionView The collection view.
@param section The collection view section.
@return If the footer background should be hidden at the specified section.
*/
- (BOOL)collectionView:(nonnull UICollectionView *)collectionView
shouldHideFooterBackgroundForSection:(NSInteger)section;
#pragma mark - Separator
/**
Asks the delegate whether the specified item should hide its separator.
@param collectionView The collection view.
@param indexPath The item's index path.
@return If the item separator should be hidden at the specified index path.
*/
- (BOOL)collectionView:(nonnull UICollectionView *)collectionView
shouldHideItemSeparatorAtIndexPath:(nonnull NSIndexPath *)indexPath;
/**
Asks the delegate whether the specified header should hide its separator.
@param collectionView The collection view.
@param section The collection view section.
@return If the header separator should be hidden at the specified section.
*/
- (BOOL)collectionView:(nonnull UICollectionView *)collectionView
shouldHideHeaderSeparatorForSection:(NSInteger)section;
/**
Asks the delegate whether the specified footer should hide its separator.
@param collectionView The collection view.
@param section The collection view section.
@return If the footer separator should be hidden at the specified section.
*/
- (BOOL)collectionView:(nonnull UICollectionView *)collectionView
shouldHideFooterSeparatorForSection:(NSInteger)section;
#pragma mark - Item inlaying
/**
Allows the receiver to receive notification that items at the specified index paths did
inlay their frame.
@param collectionView The collection view.
@param indexPaths An array of index paths.
*/
- (void)collectionView:(nonnull UICollectionView *)collectionView
didApplyInlayToItemAtIndexPaths:(nonnull NSArray<NSIndexPath *> *)indexPaths;
/**
Allows the receiver to receive notification that items at the specified index paths did
remove the inlay of their frames.
@param collectionView The collection view.
@param indexPaths An array of index paths.
*/
- (void)collectionView:(nonnull UICollectionView *)collectionView
didRemoveInlayFromItemAtIndexPaths:(nonnull NSArray<NSIndexPath *> *)indexPaths;
#pragma mark - Ink Touches
/**
Asks the delegate whether the inkView for a specified index path should be hidden.
@param collectionView The collection view.
@param indexPath The collection view index path.
@return If the ink view should be hidden at the specified index path.
*/
- (BOOL)collectionView:(nonnull UICollectionView *)collectionView
hidesInkViewAtIndexPath:(nonnull NSIndexPath *)indexPath;
/**
Asks the delegate for the ink color at the specified index path.
If nil, defaults to MDCInkView defaultInkColor.
@param collectionView The collection view.
@param indexPath The collection view index path.
@return The ink color at the specified index path.
*/
- (nullable UIColor *)collectionView:(nonnull UICollectionView *)collectionView
inkColorAtIndexPath:(nonnull NSIndexPath *)indexPath;
/**
Allows the receiver to set the ink view at the specified collection view index path.
@param collectionView The collection view.
@param inkTouchController The ink controller of the ink view.
@param indexPath The collection view index path.
@return The inkView to be used at the specified index path.
*/
- (nonnull MDCInkView *)collectionView:(nonnull UICollectionView *)collectionView
inkTouchController:(nonnull MDCInkTouchController *)inkTouchController
inkViewAtIndexPath:(nonnull NSIndexPath *)indexPath;
@end