mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 22:25:57 +00:00
Build ChatListUI
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
#import "TGDraggableCollectionViewFlowLayout.h"
|
||||
|
||||
@implementation TGDraggableCollectionViewFlowLayout
|
||||
|
||||
- (UICollectionViewLayoutAttributes *)initialLayoutAttributesForAppearingItemAtIndexPath:(NSIndexPath *)itemIndexPath
|
||||
{
|
||||
if (itemIndexPath == nil)
|
||||
return nil;
|
||||
|
||||
UICollectionViewLayoutAttributes *attributes = [super initialLayoutAttributesForAppearingItemAtIndexPath:itemIndexPath];
|
||||
attributes.transform3D = CATransform3DMakeTranslation(0, 0, itemIndexPath.row + 1);
|
||||
attributes.zIndex = itemIndexPath.row + 1;
|
||||
|
||||
return attributes;
|
||||
}
|
||||
|
||||
- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)itemIndexPath
|
||||
{
|
||||
if (itemIndexPath == nil)
|
||||
return nil;
|
||||
|
||||
UICollectionViewLayoutAttributes *attributes = [super layoutAttributesForItemAtIndexPath:itemIndexPath];
|
||||
attributes.transform3D = CATransform3DMakeTranslation(0, 0, 1000 + itemIndexPath.row + 1);
|
||||
attributes.zIndex = 1000 + itemIndexPath.row + 1;
|
||||
|
||||
return attributes;
|
||||
}
|
||||
|
||||
- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
|
||||
{
|
||||
NSArray *originalAttributes = [super layoutAttributesForElementsInRect:rect];
|
||||
|
||||
if (self.destinationIndexPath == nil)
|
||||
{
|
||||
if (self.hiddenIndexPath == nil)
|
||||
return originalAttributes;
|
||||
|
||||
for (UICollectionViewLayoutAttributes *layoutAttributes in originalAttributes)
|
||||
{
|
||||
if (layoutAttributes.representedElementCategory != UICollectionElementCategoryCell)
|
||||
continue;
|
||||
|
||||
if ([layoutAttributes.indexPath isEqual:self.hiddenIndexPath])
|
||||
layoutAttributes.hidden = true;
|
||||
}
|
||||
return originalAttributes;
|
||||
}
|
||||
|
||||
for (UICollectionViewLayoutAttributes *layoutAttributes in originalAttributes)
|
||||
{
|
||||
if (layoutAttributes.representedElementCategory != UICollectionElementCategoryCell)
|
||||
continue;
|
||||
|
||||
NSIndexPath *indexPath = layoutAttributes.indexPath;
|
||||
if ([indexPath isEqual:self.hiddenIndexPath])
|
||||
layoutAttributes.hidden = true;
|
||||
|
||||
if ([indexPath isEqual:self.destinationIndexPath])
|
||||
{
|
||||
layoutAttributes.indexPath = self.sourceIndexPath;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (indexPath.item <= self.sourceIndexPath.item && indexPath.item > self.destinationIndexPath.item)
|
||||
layoutAttributes.indexPath = [NSIndexPath indexPathForItem:indexPath.item - 1 inSection:indexPath.section];
|
||||
else if (indexPath.item >= self.sourceIndexPath.item && indexPath.item < self.destinationIndexPath.item)
|
||||
layoutAttributes.indexPath = [NSIndexPath indexPathForItem:indexPath.item + 1 inSection:indexPath.section];
|
||||
}
|
||||
}
|
||||
|
||||
return originalAttributes;
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user