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)
|
- [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)
|
- [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)
|
- 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
|
##2.4
|
||||||
- Fix an issue where inserting/deleting sections could lead to inconsistent supplementary element behavior. [Adlai Holler](https://github.com/Adlai-Holler)
|
- 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
|
#pragma mark - ASCollectionGalleryLayoutPropertiesProviding
|
||||||
|
|
||||||
- (CGSize)sizeForElements:(ASElementMap *)elements
|
- (CGSize)galleryLayoutDelegate:(nonnull ASCollectionGalleryLayoutDelegate *)delegate sizeForElements:(nonnull ASElementMap *)elements
|
||||||
{
|
{
|
||||||
ASDisplayNodeAssertMainThread();
|
ASDisplayNodeAssertMainThread();
|
||||||
return [self pageSize];
|
return [self pageSize];
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
#import <AsyncDisplayKit/ASScrollDirection.h>
|
#import <AsyncDisplayKit/ASScrollDirection.h>
|
||||||
|
|
||||||
@class ASElementMap;
|
@class ASElementMap;
|
||||||
|
@class ASCollectionGalleryLayoutDelegate;
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
@@ -24,11 +25,13 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
*
|
*
|
||||||
* @discussion This method will only be called on main thread.
|
* @discussion This method will only be called on main thread.
|
||||||
*
|
*
|
||||||
|
* @param delegate The calling object.
|
||||||
|
*
|
||||||
* @param elements All elements to be sized.
|
* @param elements All elements to be sized.
|
||||||
*
|
*
|
||||||
* @return The elements' size
|
* @return The elements' size
|
||||||
*/
|
*/
|
||||||
- (CGSize)sizeForElements:(ASElementMap *)elements;
|
- (CGSize)galleryLayoutDelegate:(ASCollectionGalleryLayoutDelegate *)delegate sizeForElements:(ASElementMap *)elements;
|
||||||
|
|
||||||
@optional
|
@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.
|
* 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.
|
* This is the same behavior as UICollectionViewFlowLayout's minimumLineSpacing.
|
||||||
*
|
*
|
||||||
|
* @param delegate The calling object.
|
||||||
|
*
|
||||||
* @param elements All elements in the layout.
|
* @param elements All elements in the layout.
|
||||||
*
|
*
|
||||||
* @return The interitem spacing
|
* @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.
|
* 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.
|
* 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.
|
* This is the same behavior as UICollectionViewFlowLayout's minimumInteritemSpacing.
|
||||||
*
|
*
|
||||||
|
* @param delegate The calling object.
|
||||||
|
*
|
||||||
* @param elements All elements in the layout.
|
* @param elements All elements in the layout.
|
||||||
*
|
*
|
||||||
* @return The interitem spacing
|
* @return The interitem spacing
|
||||||
*/
|
*/
|
||||||
- (CGFloat)minimumInteritemSpacingForElements:(ASElementMap *)elements;
|
- (CGFloat)galleryLayoutDelegate:(ASCollectionGalleryLayoutDelegate *)delegate minimumInteritemSpacingForElements:(ASElementMap *)elements;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the margins of each section.
|
* Returns the margins of each section.
|
||||||
*
|
*
|
||||||
* @discussion This method will only be called on main thread.
|
* @discussion This method will only be called on main thread.
|
||||||
*
|
*
|
||||||
|
* @param delegate The calling object.
|
||||||
|
*
|
||||||
* @param elements All elements in the layout.
|
* @param elements All elements in the layout.
|
||||||
*
|
*
|
||||||
* @return The margins used to layout content in a section
|
* @return The margins used to layout content in a section
|
||||||
*/
|
*/
|
||||||
- (UIEdgeInsets)sectionInsetForElements:(ASElementMap *)elements;
|
- (UIEdgeInsets)galleryLayoutDelegate:(ASCollectionGalleryLayoutDelegate *)delegate sectionInsetForElements:(ASElementMap *)elements;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|||||||
@@ -66,9 +66,9 @@
|
|||||||
_propertiesProviderFlags = {};
|
_propertiesProviderFlags = {};
|
||||||
} else {
|
} else {
|
||||||
_propertiesProvider = propertiesProvider;
|
_propertiesProvider = propertiesProvider;
|
||||||
_propertiesProviderFlags.minimumLineSpacingForElements = [_propertiesProvider respondsToSelector:@selector(minimumLineSpacingForElements:)];
|
_propertiesProviderFlags.minimumLineSpacingForElements = [_propertiesProvider respondsToSelector:@selector(galleryLayoutDelegate:minimumLineSpacingForElements:)];
|
||||||
_propertiesProviderFlags.minimumInteritemSpacingForElements = [_propertiesProvider respondsToSelector:@selector(minimumInteritemSpacingForElements:)];
|
_propertiesProviderFlags.minimumInteritemSpacingForElements = [_propertiesProvider respondsToSelector:@selector(galleryLayoutDelegate:minimumInteritemSpacingForElements:)];
|
||||||
_propertiesProviderFlags.sectionInsetForElements = [_propertiesProvider respondsToSelector:@selector(sectionInsetForElements:)];
|
_propertiesProviderFlags.sectionInsetForElements = [_propertiesProvider respondsToSelector:@selector(galleryLayoutDelegate:sectionInsetForElements:)];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,10 +80,10 @@
|
|||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
CGSize itemSize = [propertiesProvider sizeForElements:elements];
|
CGSize itemSize = [propertiesProvider galleryLayoutDelegate:self sizeForElements:elements];
|
||||||
UIEdgeInsets sectionInset = _propertiesProviderFlags.sectionInsetForElements ? [propertiesProvider sectionInsetForElements:elements] : UIEdgeInsetsZero;
|
UIEdgeInsets sectionInset = _propertiesProviderFlags.sectionInsetForElements ? [propertiesProvider galleryLayoutDelegate:self sectionInsetForElements:elements] : UIEdgeInsetsZero;
|
||||||
CGFloat lineSpacing = _propertiesProviderFlags.minimumLineSpacingForElements ? [propertiesProvider minimumLineSpacingForElements:elements] : 0.0;
|
CGFloat lineSpacing = _propertiesProviderFlags.minimumLineSpacingForElements ? [propertiesProvider galleryLayoutDelegate:self minimumLineSpacingForElements:elements] : 0.0;
|
||||||
CGFloat interitemSpacing = _propertiesProviderFlags.minimumInteritemSpacingForElements ? [propertiesProvider minimumInteritemSpacingForElements:elements] : 0.0;
|
CGFloat interitemSpacing = _propertiesProviderFlags.minimumInteritemSpacingForElements ? [propertiesProvider galleryLayoutDelegate:self minimumInteritemSpacingForElements:elements] : 0.0;
|
||||||
return [[_ASCollectionGalleryLayoutInfo alloc] initWithItemSize:itemSize
|
return [[_ASCollectionGalleryLayoutInfo alloc] initWithItemSize:itemSize
|
||||||
minimumLineSpacing:lineSpacing
|
minimumLineSpacing:lineSpacing
|
||||||
minimumInteritemSpacing:interitemSpacing
|
minimumInteritemSpacing:interitemSpacing
|
||||||
|
|||||||
@@ -112,7 +112,7 @@
|
|||||||
|
|
||||||
#pragma mark - ASCollectionGalleryLayoutPropertiesProviding
|
#pragma mark - ASCollectionGalleryLayoutPropertiesProviding
|
||||||
|
|
||||||
- (CGSize)sizeForElements:(ASElementMap *)elements
|
- (CGSize)galleryLayoutDelegate:(ASCollectionGalleryLayoutDelegate *)delegate sizeForElements:(ASElementMap *)elements
|
||||||
{
|
{
|
||||||
ASDisplayNodeAssertMainThread();
|
ASDisplayNodeAssertMainThread();
|
||||||
return CGSizeMake(180, 90);
|
return CGSizeMake(180, 90);
|
||||||
|
|||||||
Reference in New Issue
Block a user