mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 06:35:51 +00:00
Fix cell selection and highlighting in ASCollectionView
This commit is contained in:
@@ -115,13 +115,22 @@ static BOOL _isInterceptedSelector(SEL sel)
|
|||||||
|
|
||||||
@implementation _ASCollectionViewCell
|
@implementation _ASCollectionViewCell
|
||||||
|
|
||||||
|
- (void)setNode:(ASCellNode *)node
|
||||||
|
{
|
||||||
|
_node = node;
|
||||||
|
node.selected = self.selected;
|
||||||
|
node.highlighted = self.highlighted;
|
||||||
|
}
|
||||||
|
|
||||||
- (void)setSelected:(BOOL)selected
|
- (void)setSelected:(BOOL)selected
|
||||||
{
|
{
|
||||||
|
[super setSelected:selected];
|
||||||
_node.selected = selected;
|
_node.selected = selected;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setHighlighted:(BOOL)highlighted
|
- (void)setHighlighted:(BOOL)highlighted
|
||||||
{
|
{
|
||||||
|
[super setHighlighted:highlighted];
|
||||||
_node.highlighted = highlighted;
|
_node.highlighted = highlighted;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -478,11 +487,8 @@ static BOOL _isInterceptedSelector(SEL sel)
|
|||||||
_ASCollectionViewCell *cell = [self dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];
|
_ASCollectionViewCell *cell = [self dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];
|
||||||
|
|
||||||
ASCellNode *node = [_dataController nodeAtIndexPath:indexPath];
|
ASCellNode *node = [_dataController nodeAtIndexPath:indexPath];
|
||||||
|
|
||||||
[_rangeController configureContentView:cell.contentView forCellNode:node];
|
|
||||||
|
|
||||||
cell.node = node;
|
cell.node = node;
|
||||||
|
[_rangeController configureContentView:cell.contentView forCellNode:node];
|
||||||
return cell;
|
return cell;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
objects = {
|
objects = {
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
|
25FDEC921BF31EE700CEB123 /* ItemNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 25FDEC911BF31EE700CEB123 /* ItemNode.m */; };
|
||||||
9B92C8811BC17D3000EE46B2 /* SupplementaryNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B92C8801BC17D3000EE46B2 /* SupplementaryNode.m */; };
|
9B92C8811BC17D3000EE46B2 /* SupplementaryNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B92C8801BC17D3000EE46B2 /* SupplementaryNode.m */; };
|
||||||
9BA2CEA11BB2579C00D18414 /* Launchboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9BA2CEA01BB2579C00D18414 /* Launchboard.storyboard */; };
|
9BA2CEA11BB2579C00D18414 /* Launchboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9BA2CEA01BB2579C00D18414 /* Launchboard.storyboard */; };
|
||||||
AC3C4A641A11F47200143C57 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = AC3C4A631A11F47200143C57 /* main.m */; };
|
AC3C4A641A11F47200143C57 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = AC3C4A631A11F47200143C57 /* main.m */; };
|
||||||
@@ -17,6 +18,8 @@
|
|||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
|
25FDEC901BF31EE700CEB123 /* ItemNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ItemNode.h; sourceTree = "<group>"; };
|
||||||
|
25FDEC911BF31EE700CEB123 /* ItemNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ItemNode.m; sourceTree = "<group>"; };
|
||||||
2DBAEE96397BB913350C4530 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = "<group>"; };
|
2DBAEE96397BB913350C4530 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
9B92C87F1BC17D3000EE46B2 /* SupplementaryNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SupplementaryNode.h; sourceTree = "<group>"; };
|
9B92C87F1BC17D3000EE46B2 /* SupplementaryNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SupplementaryNode.h; sourceTree = "<group>"; };
|
||||||
9B92C8801BC17D3000EE46B2 /* SupplementaryNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SupplementaryNode.m; sourceTree = "<group>"; };
|
9B92C8801BC17D3000EE46B2 /* SupplementaryNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SupplementaryNode.m; sourceTree = "<group>"; };
|
||||||
@@ -83,6 +86,8 @@
|
|||||||
AC3C4A611A11F47200143C57 /* Supporting Files */,
|
AC3C4A611A11F47200143C57 /* Supporting Files */,
|
||||||
9B92C87F1BC17D3000EE46B2 /* SupplementaryNode.h */,
|
9B92C87F1BC17D3000EE46B2 /* SupplementaryNode.h */,
|
||||||
9B92C8801BC17D3000EE46B2 /* SupplementaryNode.m */,
|
9B92C8801BC17D3000EE46B2 /* SupplementaryNode.m */,
|
||||||
|
25FDEC901BF31EE700CEB123 /* ItemNode.h */,
|
||||||
|
25FDEC911BF31EE700CEB123 /* ItemNode.m */,
|
||||||
);
|
);
|
||||||
indentWidth = 2;
|
indentWidth = 2;
|
||||||
path = Sample;
|
path = Sample;
|
||||||
@@ -228,6 +233,7 @@
|
|||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
25FDEC921BF31EE700CEB123 /* ItemNode.m in Sources */,
|
||||||
AC3C4A6A1A11F47200143C57 /* ViewController.m in Sources */,
|
AC3C4A6A1A11F47200143C57 /* ViewController.m in Sources */,
|
||||||
9B92C8811BC17D3000EE46B2 /* SupplementaryNode.m in Sources */,
|
9B92C8811BC17D3000EE46B2 /* SupplementaryNode.m in Sources */,
|
||||||
AC3C4A671A11F47200143C57 /* AppDelegate.m in Sources */,
|
AC3C4A671A11F47200143C57 /* AppDelegate.m in Sources */,
|
||||||
|
|||||||
18
examples/ASCollectionView/Sample/ItemNode.h
Normal file
18
examples/ASCollectionView/Sample/ItemNode.h
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
/* This file provided by Facebook is for non-commercial testing and evaluation
|
||||||
|
* purposes only. Facebook reserves all rights not expressly granted.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#import <AsyncDisplayKit/AsyncDisplayKit.h>
|
||||||
|
|
||||||
|
@interface ItemNode : ASTextCellNode
|
||||||
|
|
||||||
|
- (instancetype)initWithString:(NSString *)string;
|
||||||
|
|
||||||
|
@end
|
||||||
49
examples/ASCollectionView/Sample/ItemNode.m
Normal file
49
examples/ASCollectionView/Sample/ItemNode.m
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
/* This file provided by Facebook is for non-commercial testing and evaluation
|
||||||
|
* purposes only. Facebook reserves all rights not expressly granted.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#import "ItemNode.h"
|
||||||
|
|
||||||
|
@implementation ItemNode
|
||||||
|
|
||||||
|
- (instancetype)initWithString:(NSString *)string
|
||||||
|
{
|
||||||
|
self = [super init];
|
||||||
|
if (self != nil) {
|
||||||
|
self.text = string;
|
||||||
|
[self updateBackgroundColor];
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)updateBackgroundColor
|
||||||
|
{
|
||||||
|
if (self.highlighted) {
|
||||||
|
self.backgroundColor = [UIColor grayColor];
|
||||||
|
} else if (self.selected) {
|
||||||
|
self.backgroundColor = [UIColor darkGrayColor];
|
||||||
|
} else {
|
||||||
|
self.backgroundColor = [UIColor lightGrayColor];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setSelected:(BOOL)selected
|
||||||
|
{
|
||||||
|
[super setSelected:selected];
|
||||||
|
[self updateBackgroundColor];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setHighlighted:(BOOL)highlighted
|
||||||
|
{
|
||||||
|
[super setHighlighted:highlighted];
|
||||||
|
[self updateBackgroundColor];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
@@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
#import <AsyncDisplayKit/AsyncDisplayKit.h>
|
#import <AsyncDisplayKit/AsyncDisplayKit.h>
|
||||||
#import "SupplementaryNode.h"
|
#import "SupplementaryNode.h"
|
||||||
|
#import "ItemNode.h"
|
||||||
|
|
||||||
@interface ViewController () <ASCollectionViewDataSource, ASCollectionViewDelegateFlowLayout>
|
@interface ViewController () <ASCollectionViewDataSource, ASCollectionViewDelegateFlowLayout>
|
||||||
{
|
{
|
||||||
@@ -78,11 +79,7 @@
|
|||||||
- (ASCellNode *)collectionView:(ASCollectionView *)collectionView nodeForItemAtIndexPath:(NSIndexPath *)indexPath
|
- (ASCellNode *)collectionView:(ASCollectionView *)collectionView nodeForItemAtIndexPath:(NSIndexPath *)indexPath
|
||||||
{
|
{
|
||||||
NSString *text = [NSString stringWithFormat:@"[%zd.%zd] says hi", indexPath.section, indexPath.item];
|
NSString *text = [NSString stringWithFormat:@"[%zd.%zd] says hi", indexPath.section, indexPath.item];
|
||||||
ASTextCellNode *node = [[ASTextCellNode alloc] init];
|
return [[ItemNode alloc] initWithString:text];
|
||||||
node.text = text;
|
|
||||||
node.backgroundColor = [UIColor lightGrayColor];
|
|
||||||
|
|
||||||
return node;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (ASCellNode *)collectionView:(ASCollectionView *)collectionView nodeForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
|
- (ASCellNode *)collectionView:(ASCollectionView *)collectionView nodeForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
|
||||||
|
|||||||
Reference in New Issue
Block a user