mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-24 07:05:35 +00:00
IGListKit Support II: Electric Boogaloo (#2942)
* Reimplement IGListKit support in a cleaner way * Rename and fix some stuff * Fix supplementaries more * Update docs * Update test * Cleanup minor things * Tweak it * Indentation * Remove irrelevant changes * Break out cell into its own file * Fix indentation * Address feedback
This commit is contained in:
74
AsyncDisplayKit/Details/_ASCollectionViewCell.m
Normal file
74
AsyncDisplayKit/Details/_ASCollectionViewCell.m
Normal file
@@ -0,0 +1,74 @@
|
||||
//
|
||||
// _ASCollectionViewCell.m
|
||||
// AsyncDisplayKit
|
||||
//
|
||||
// Created by Adlai Holler on 1/30/17.
|
||||
// Copyright © 2017 Facebook. All rights reserved.
|
||||
//
|
||||
|
||||
#import "_ASCollectionViewCell.h"
|
||||
#import "ASCellNode+Internal.h"
|
||||
#import <AsyncDisplayKit/AsyncDisplayKit.h>
|
||||
|
||||
@implementation _ASCollectionViewCell
|
||||
|
||||
- (void)setNode:(ASCellNode *)node
|
||||
{
|
||||
ASDisplayNodeAssertMainThread();
|
||||
node.layoutAttributes = _layoutAttributes;
|
||||
_node = node;
|
||||
self.backgroundColor = node.backgroundColor;
|
||||
self.clipsToBounds = node.clipsToBounds;
|
||||
[node __setSelectedFromUIKit:self.selected];
|
||||
[node __setHighlightedFromUIKit:self.highlighted];
|
||||
}
|
||||
|
||||
- (void)setSelected:(BOOL)selected
|
||||
{
|
||||
[super setSelected:selected];
|
||||
[_node __setSelectedFromUIKit:selected];
|
||||
}
|
||||
|
||||
- (void)setHighlighted:(BOOL)highlighted
|
||||
{
|
||||
[super setHighlighted:highlighted];
|
||||
[_node __setHighlightedFromUIKit:highlighted];
|
||||
}
|
||||
|
||||
- (void)setLayoutAttributes:(UICollectionViewLayoutAttributes *)layoutAttributes
|
||||
{
|
||||
_layoutAttributes = layoutAttributes;
|
||||
_node.layoutAttributes = layoutAttributes;
|
||||
}
|
||||
|
||||
- (void)prepareForReuse
|
||||
{
|
||||
self.layoutAttributes = nil;
|
||||
|
||||
// Need to clear node pointer before UIKit calls setSelected:NO / setHighlighted:NO on its cells
|
||||
self.node = nil;
|
||||
[super prepareForReuse];
|
||||
}
|
||||
|
||||
/**
|
||||
* In the initial case, this is called by UICollectionView during cell dequeueing, before
|
||||
* we get a chance to assign a node to it, so we must be sure to set these layout attributes
|
||||
* on our node when one is next assigned to us in @c setNode: . Since there may be cases when we _do_ already
|
||||
* have our node assigned e.g. during a layout update for existing cells, we also attempt
|
||||
* to update it now.
|
||||
*/
|
||||
- (void)applyLayoutAttributes:(UICollectionViewLayoutAttributes *)layoutAttributes
|
||||
{
|
||||
self.layoutAttributes = layoutAttributes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Keep our node filling our content view.
|
||||
*/
|
||||
- (void)layoutSubviews
|
||||
{
|
||||
[super layoutSubviews];
|
||||
self.node.frame = self.contentView.bounds;
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user