mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 22:55:00 +00:00
[Gallery layout] Include the caller in properties providing methods (#533)
* Include the caller in ASCollectionGalleryLayoutPropertiesProviding's methods * Update CHANGELOG.md
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
- [Breaking] Remove APIs that have been deprecated since 2.0 and/or for at least 6 months [Huy Nguyen](https://github.com/nguyenhuy) [#529](https://github.com/TextureGroup/Texture/pull/529)
|
||||
- [ASDisplayNode] Ensure `-displayWillStartAsynchronously:` and `-displayDidFinish` are invoked on rasterized subnodes. [Eric Scheers](https://github.com/smeis) [#532](https://github.com/TextureGroup/Texture/pull/532)
|
||||
- Fixed a memory corruption issue in the ASImageNode display system. [Adlai Holler](https://github.com/Adlai-Holler) [#555](https://github.com/TextureGroup/Texture/pull/555)
|
||||
- [Breaking] Rename ASCollectionGalleryLayoutSizeProviding to ASCollectionGalleryLayoutPropertiesProviding. Besides a fixed item size, it now can provide interitem and line spacings, as well as section inset [Huy Nguyen](https://github.com/nguyenhuy) [#496](https://github.com/TextureGroup/Texture/pull/496) [#533](https://github.com/TextureGroup/Texture/pull/533)
|
||||
|
||||
##2.4
|
||||
- Fix an issue where inserting/deleting sections could lead to inconsistent supplementary element behavior. [Adlai Holler](https://github.com/Adlai-Holler)
|
||||
|
||||
@@ -145,7 +145,7 @@
|
||||
|
||||
#pragma mark - ASCollectionGalleryLayoutPropertiesProviding
|
||||
|
||||
- (CGSize)sizeForElements:(ASElementMap *)elements
|
||||
- (CGSize)galleryLayoutDelegate:(nonnull ASCollectionGalleryLayoutDelegate *)delegate sizeForElements:(nonnull ASElementMap *)elements
|
||||
{
|
||||
ASDisplayNodeAssertMainThread();
|
||||
return [self pageSize];
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#import <AsyncDisplayKit/ASScrollDirection.h>
|
||||
|
||||
@class ASElementMap;
|
||||
@class ASCollectionGalleryLayoutDelegate;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@@ -24,11 +25,13 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
*
|
||||
* @discussion This method will only be called on main thread.
|
||||
*
|
||||
* @param delegate The calling object.
|
||||
*
|
||||
* @param elements All elements to be sized.
|
||||
*
|
||||
* @return The elements' size
|
||||
*/
|
||||
- (CGSize)sizeForElements:(ASElementMap *)elements;
|
||||
- (CGSize)galleryLayoutDelegate:(ASCollectionGalleryLayoutDelegate *)delegate sizeForElements:(ASElementMap *)elements;
|
||||
|
||||
@optional
|
||||
|
||||
@@ -42,11 +45,13 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
* It is not applied between the first line and the header, or between the last line and the footer.
|
||||
* This is the same behavior as UICollectionViewFlowLayout's minimumLineSpacing.
|
||||
*
|
||||
* @param delegate The calling object.
|
||||
*
|
||||
* @param elements All elements in the layout.
|
||||
*
|
||||
* @return The interitem spacing
|
||||
*/
|
||||
- (CGFloat)minimumLineSpacingForElements:(ASElementMap *)elements;
|
||||
- (CGFloat)galleryLayoutDelegate:(ASCollectionGalleryLayoutDelegate *)delegate minimumLineSpacingForElements:(ASElementMap *)elements;
|
||||
|
||||
/**
|
||||
* Returns the minumum spacing to use between items in the same row or column, depending on the scroll directions.
|
||||
@@ -58,22 +63,26 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
* It is considered while fitting items into lines, but the actual final spacing between some items might be larger.
|
||||
* This is the same behavior as UICollectionViewFlowLayout's minimumInteritemSpacing.
|
||||
*
|
||||
* @param delegate The calling object.
|
||||
*
|
||||
* @param elements All elements in the layout.
|
||||
*
|
||||
* @return The interitem spacing
|
||||
*/
|
||||
- (CGFloat)minimumInteritemSpacingForElements:(ASElementMap *)elements;
|
||||
- (CGFloat)galleryLayoutDelegate:(ASCollectionGalleryLayoutDelegate *)delegate minimumInteritemSpacingForElements:(ASElementMap *)elements;
|
||||
|
||||
/**
|
||||
* Returns the margins of each section.
|
||||
*
|
||||
* @discussion This method will only be called on main thread.
|
||||
*
|
||||
* @param delegate The calling object.
|
||||
*
|
||||
* @param elements All elements in the layout.
|
||||
*
|
||||
* @return The margins used to layout content in a section
|
||||
*/
|
||||
- (UIEdgeInsets)sectionInsetForElements:(ASElementMap *)elements;
|
||||
- (UIEdgeInsets)galleryLayoutDelegate:(ASCollectionGalleryLayoutDelegate *)delegate sectionInsetForElements:(ASElementMap *)elements;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@@ -66,9 +66,9 @@
|
||||
_propertiesProviderFlags = {};
|
||||
} else {
|
||||
_propertiesProvider = propertiesProvider;
|
||||
_propertiesProviderFlags.minimumLineSpacingForElements = [_propertiesProvider respondsToSelector:@selector(minimumLineSpacingForElements:)];
|
||||
_propertiesProviderFlags.minimumInteritemSpacingForElements = [_propertiesProvider respondsToSelector:@selector(minimumInteritemSpacingForElements:)];
|
||||
_propertiesProviderFlags.sectionInsetForElements = [_propertiesProvider respondsToSelector:@selector(sectionInsetForElements:)];
|
||||
_propertiesProviderFlags.minimumLineSpacingForElements = [_propertiesProvider respondsToSelector:@selector(galleryLayoutDelegate:minimumLineSpacingForElements:)];
|
||||
_propertiesProviderFlags.minimumInteritemSpacingForElements = [_propertiesProvider respondsToSelector:@selector(galleryLayoutDelegate:minimumInteritemSpacingForElements:)];
|
||||
_propertiesProviderFlags.sectionInsetForElements = [_propertiesProvider respondsToSelector:@selector(galleryLayoutDelegate:sectionInsetForElements:)];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -80,10 +80,10 @@
|
||||
return nil;
|
||||
}
|
||||
|
||||
CGSize itemSize = [propertiesProvider sizeForElements:elements];
|
||||
UIEdgeInsets sectionInset = _propertiesProviderFlags.sectionInsetForElements ? [propertiesProvider sectionInsetForElements:elements] : UIEdgeInsetsZero;
|
||||
CGFloat lineSpacing = _propertiesProviderFlags.minimumLineSpacingForElements ? [propertiesProvider minimumLineSpacingForElements:elements] : 0.0;
|
||||
CGFloat interitemSpacing = _propertiesProviderFlags.minimumInteritemSpacingForElements ? [propertiesProvider minimumInteritemSpacingForElements:elements] : 0.0;
|
||||
CGSize itemSize = [propertiesProvider galleryLayoutDelegate:self sizeForElements:elements];
|
||||
UIEdgeInsets sectionInset = _propertiesProviderFlags.sectionInsetForElements ? [propertiesProvider galleryLayoutDelegate:self sectionInsetForElements:elements] : UIEdgeInsetsZero;
|
||||
CGFloat lineSpacing = _propertiesProviderFlags.minimumLineSpacingForElements ? [propertiesProvider galleryLayoutDelegate:self minimumLineSpacingForElements:elements] : 0.0;
|
||||
CGFloat interitemSpacing = _propertiesProviderFlags.minimumInteritemSpacingForElements ? [propertiesProvider galleryLayoutDelegate:self minimumInteritemSpacingForElements:elements] : 0.0;
|
||||
return [[_ASCollectionGalleryLayoutInfo alloc] initWithItemSize:itemSize
|
||||
minimumLineSpacing:lineSpacing
|
||||
minimumInteritemSpacing:interitemSpacing
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
|
||||
#pragma mark - ASCollectionGalleryLayoutPropertiesProviding
|
||||
|
||||
- (CGSize)sizeForElements:(ASElementMap *)elements
|
||||
- (CGSize)galleryLayoutDelegate:(ASCollectionGalleryLayoutDelegate *)delegate sizeForElements:(ASElementMap *)elements
|
||||
{
|
||||
ASDisplayNodeAssertMainThread();
|
||||
return CGSizeMake(180, 90);
|
||||
|
||||
Reference in New Issue
Block a user