Skip to content
This repository was archived by the owner on Feb 2, 2023. It is now read-only.

Commit 579313f

Browse files
committed
Merge branch 'master' into ASVideoNode
2 parents 5fbf396 + 516e1f1 commit 579313f

74 files changed

Lines changed: 1566 additions & 575 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

AsyncDisplayKit.podspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
Pod::Spec.new do |spec|
22
spec.name = 'AsyncDisplayKit'
3-
spec.version = '1.9.4'
3+
spec.version = '1.9.5'
44
spec.license = { :type => 'BSD' }
55
spec.homepage = 'http://asyncdisplaykit.org'
66
spec.authors = { 'Scott Goodson' => 'scottgoodson@gmail.com', 'Ryan Nystrom' => 'rnystrom@fb.com' }
77
spec.summary = 'Smooth asynchronous user interfaces for iOS apps.'
8-
spec.source = { :git => 'https://github.com/facebook/AsyncDisplayKit.git', :tag => '1.9.4' }
8+
spec.source = { :git => 'https://github.com/facebook/AsyncDisplayKit.git', :tag => '1.9.5' }
99

1010
spec.documentation_url = 'http://asyncdisplaykit.org/appledoc/'
1111

AsyncDisplayKit.xcodeproj/project.pbxproj

Lines changed: 63 additions & 18 deletions
Large diffs are not rendered by default.

AsyncDisplayKit.xcodeproj/xcshareddata/xcschemes/AsyncDisplayKit.xcscheme

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@
4040
buildConfiguration = "Debug"
4141
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
4242
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
43-
shouldUseLaunchSchemeArgsEnv = "YES">
43+
shouldUseLaunchSchemeArgsEnv = "YES"
44+
codeCoverageEnabled = "YES">
4445
<Testables>
4546
<TestableReference
4647
skipped = "NO">

AsyncDisplayKit.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings

Lines changed: 0 additions & 8 deletions
This file was deleted.

AsyncDisplayKit/ASButtonNode.h

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,6 @@
99
#import <AsyncDisplayKit/ASTextNode.h>
1010
#import <AsyncDisplayKit/ASImageNode.h>
1111

12-
typedef enum : NSUInteger {
13-
ASButtonStateNormal,
14-
ASButtonStateHighlighted,
15-
ASButtonStateDisabled,
16-
} ASButtonState;
17-
1812
@interface ASButtonNode : ASControlNode
1913

2014
@property (nonatomic, readonly) ASTextNode *titleNode;
@@ -43,10 +37,10 @@ typedef enum : NSUInteger {
4337
@property (nonatomic, assign) ASVerticalAlignment contentVerticalAlignment;
4438

4539

46-
- (NSAttributedString *)attributedTitleForState:(ASButtonState)state;
47-
- (void)setAttributedTitle:(NSAttributedString *)title forState:(ASButtonState)state;
40+
- (NSAttributedString *)attributedTitleForState:(ASControlState)state;
41+
- (void)setAttributedTitle:(NSAttributedString *)title forState:(ASControlState)state;
4842

49-
- (UIImage *)imageForState:(ASButtonState)state;
50-
- (void)setImage:(UIImage *)image forState:(ASButtonState)state;
43+
- (UIImage *)imageForState:(ASControlState)state;
44+
- (void)setImage:(UIImage *)image forState:(ASControlState)state;
5145

5246
@end

AsyncDisplayKit/ASButtonNode.mm

Lines changed: 64 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@ @interface ASButtonNode ()
1717

1818
NSAttributedString *_normalAttributedTitle;
1919
NSAttributedString *_highlightedAttributedTitle;
20+
NSAttributedString *_selectedAttributedTitle;
2021
NSAttributedString *_disabledAttributedTitle;
2122

2223
UIImage *_normalImage;
2324
UIImage *_highlightedImage;
25+
UIImage *_selectedImage;
2426
UIImage *_disabledImage;
2527
}
2628

@@ -45,14 +47,27 @@ - (instancetype)init
4547

4648
[self addSubnode:_titleNode];
4749
[self addSubnode:_imageNode];
48-
49-
[self addTarget:self action:@selector(controlEventUpdated:) forControlEvents:ASControlNodeEventAllEvents];
5050
}
5151
return self;
5252
}
5353

54-
- (void)controlEventUpdated:(ASControlNode *)node
54+
- (void)setEnabled:(BOOL)enabled
55+
{
56+
[super setEnabled:enabled];
57+
[self updateImage];
58+
[self updateTitle];
59+
}
60+
61+
- (void)setHighlighted:(BOOL)highlighted
5562
{
63+
[super setHighlighted:highlighted];
64+
[self updateImage];
65+
[self updateTitle];
66+
}
67+
68+
- (void)setSelected:(BOOL)selected
69+
{
70+
[super setSelected:selected];
5671
[self updateImage];
5772
[self updateTitle];
5873
}
@@ -66,6 +81,8 @@ - (void)updateImage
6681
newImage = _disabledImage;
6782
} else if (self.highlighted && _highlightedImage) {
6883
newImage = _highlightedImage;
84+
} else if (self.selected && _selectedImage) {
85+
newImage = _selectedImage;
6986
} else {
7087
newImage = _normalImage;
7188
}
@@ -84,6 +101,8 @@ - (void)updateTitle
84101
newTitle = _disabledAttributedTitle;
85102
} else if (self.highlighted && _highlightedAttributedTitle) {
86103
newTitle = _highlightedAttributedTitle;
104+
} else if (self.selected && _selectedAttributedTitle) {
105+
newTitle = _selectedAttributedTitle;
87106
} else {
88107
newTitle = _normalAttributedTitle;
89108
}
@@ -126,70 +145,96 @@ - (void)setLaysOutHorizontally:(BOOL)laysOutHorizontally
126145
[self setNeedsLayout];
127146
}
128147

129-
- (NSAttributedString *)attributedTitleForState:(ASButtonState)state
148+
- (NSAttributedString *)attributedTitleForState:(ASControlState)state
130149
{
131150
ASDN::MutexLocker l(_propertyLock);
132151
switch (state) {
133-
case ASButtonStateNormal:
152+
case ASControlStateNormal:
134153
return _normalAttributedTitle;
135154

136-
case ASButtonStateHighlighted:
155+
case ASControlStateHighlighted:
137156
return _highlightedAttributedTitle;
138157

139-
case ASButtonStateDisabled:
158+
case ASControlStateSelected:
159+
return _selectedAttributedTitle;
160+
161+
case ASControlStateDisabled:
140162
return _disabledAttributedTitle;
163+
164+
default:
165+
return _normalAttributedTitle;
141166
}
142167
}
143168

144-
- (void)setAttributedTitle:(NSAttributedString *)title forState:(ASButtonState)state
169+
- (void)setAttributedTitle:(NSAttributedString *)title forState:(ASControlState)state
145170
{
146171
ASDN::MutexLocker l(_propertyLock);
147172
switch (state) {
148-
case ASButtonStateNormal:
173+
case ASControlStateNormal:
149174
_normalAttributedTitle = [title copy];
150175
break;
151176

152-
case ASButtonStateHighlighted:
177+
case ASControlStateHighlighted:
153178
_highlightedAttributedTitle = [title copy];
154179
break;
155180

156-
case ASButtonStateDisabled:
181+
case ASControlStateSelected:
182+
_selectedAttributedTitle = [title copy];
183+
break;
184+
185+
case ASControlStateDisabled:
157186
_disabledAttributedTitle = [title copy];
158187
break;
188+
189+
default:
190+
break;
159191
}
160192
[self updateTitle];
161193
}
162194

163-
- (UIImage *)imageForState:(ASButtonState)state
195+
- (UIImage *)imageForState:(ASControlState)state
164196
{
165197
ASDN::MutexLocker l(_propertyLock);
166198
switch (state) {
167-
case ASButtonStateNormal:
199+
case ASControlStateNormal:
168200
return _normalImage;
169201

170-
case ASButtonStateHighlighted:
202+
case ASControlStateHighlighted:
171203
return _highlightedImage;
172204

173-
case ASButtonStateDisabled:
205+
case ASControlStateSelected:
206+
return _selectedImage;
207+
208+
case ASControlStateDisabled:
174209
return _disabledImage;
210+
211+
default:
212+
return _normalImage;
175213
}
176214
}
177215

178-
- (void)setImage:(UIImage *)image forState:(ASButtonState)state
216+
- (void)setImage:(UIImage *)image forState:(ASControlState)state
179217
{
180218
ASDN::MutexLocker l(_propertyLock);
181219
switch (state) {
182-
case ASButtonStateNormal:
220+
case ASControlStateNormal:
183221
_normalImage = image;
184222
break;
185223

186-
case ASButtonStateHighlighted:
224+
case ASControlStateHighlighted:
187225
_highlightedImage = image;
188226
break;
189227

190-
case ASButtonStateDisabled:
228+
case ASControlStateSelected:
229+
_selectedImage = image;
230+
break;
231+
232+
case ASControlStateDisabled:
191233
_disabledImage = image;
192234
break;
235+
236+
default:
237+
break;
193238
}
194239
[self updateImage];
195240
}

AsyncDisplayKit/ASCellNode.m

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,6 @@ - (instancetype)initWithViewControllerBlock:(ASDisplayNodeViewControllerBlock)vi
6363
return self;
6464
}
6565

66-
//- (ASLayoutSpec *)layoutSpecThatFits:(ASSizeRange)constrainedSize
67-
//{
68-
// _viewControllerNode.frame = (CGRect){{0,0}, constrainedSize.max};
69-
// NSLog(@"%f %f", constrainedSize.max.width, constrainedSize.max.height);
70-
// return [super layoutSpecThatFits:constrainedSize];
71-
//}
72-
7366
- (void)layout
7467
{
7568
[super layout];
Lines changed: 57 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@
77
//
88

99
#import "ASCollectionNode.h"
10+
#import "ASCollectionInternal.h"
1011
#import "ASDisplayNode+Subclasses.h"
12+
#import "ASRangeController.h"
13+
#include <vector>
1114

1215
@interface _ASCollectionPendingState : NSObject
1316
@property (weak, nonatomic) id <ASCollectionDelegate> delegate;
@@ -17,12 +20,39 @@ @interface _ASCollectionPendingState : NSObject
1720
@implementation _ASCollectionPendingState
1821
@end
1922

20-
@interface ASCollectionNode ()
21-
@property (nonatomic) _ASCollectionPendingState *pendingState;
23+
#if 0 // This is not used yet, but will provide a way to avoid creating the view to set range values.
24+
@implementation _ASCollectionPendingState
25+
{
26+
std::vector<ASRangeTuningParameters> _tuningParameters;
27+
}
28+
29+
- (instancetype)init
30+
{
31+
if (!(self = [super init])) {
32+
return nil;
33+
}
34+
_tuningParameters = std::vector<ASRangeTuningParameters>(ASLayoutRangeTypeCount);
35+
return self;
36+
}
37+
38+
- (ASRangeTuningParameters)tuningParametersForRangeType:(ASLayoutRangeType)rangeType
39+
{
40+
ASDisplayNodeAssert(rangeType < _tuningParameters.size(), @"Requesting a range that is OOB for the configured tuning parameters");
41+
return _tuningParameters[rangeType];
42+
}
43+
44+
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeType:(ASLayoutRangeType)rangeType
45+
{
46+
ASDisplayNodeAssert(rangeType < _tuningParameters.size(), @"Requesting a range that is OOB for the configured tuning parameters");
47+
ASDisplayNodeAssert(rangeType != ASLayoutRangeTypeVisible, @"Must not set Visible range tuning parameters (always 0, 0)");
48+
_tuningParameters[rangeType] = tuningParameters;
49+
}
50+
2251
@end
52+
#endif
2353

24-
@interface ASCollectionView ()
25-
- (instancetype)_initWithFrame:(CGRect)frame collectionViewLayout:(UICollectionViewLayout *)layout;
54+
@interface ASCollectionNode ()
55+
@property (nonatomic) _ASCollectionPendingState *pendingState;
2656
@end
2757

2858
@implementation ASCollectionNode
@@ -40,10 +70,22 @@ - (instancetype)initWithCollectionViewLayout:(UICollectionViewLayout *)layout
4070
return [self initWithFrame:CGRectZero collectionViewLayout:layout];
4171
}
4272

73+
- (instancetype)_initWithCollectionView:(ASCollectionView *)collectionView
74+
{
75+
ASDisplayNodeViewBlock collectionViewBlock = ^UIView *{ return collectionView; };
76+
77+
if (self = [super initWithViewBlock:collectionViewBlock]) {
78+
// ASCollectionView created directly by the app. Trigger -loadView to set up collectionNode pointer.
79+
__unused ASCollectionView *collectionView = [self view];
80+
return self;
81+
}
82+
return nil;
83+
}
84+
4385
- (instancetype)initWithFrame:(CGRect)frame collectionViewLayout:(UICollectionViewLayout *)layout
4486
{
4587
ASDisplayNodeViewBlock collectionViewBlock = ^UIView *{
46-
return [[ASCollectionView alloc] _initWithFrame:frame collectionViewLayout:layout];
88+
return [[ASCollectionView alloc] _initWithFrame:frame collectionViewLayout:layout ownedByNode:YES];
4789
};
4890

4991
if (self = [super initWithViewBlock:collectionViewBlock]) {
@@ -56,11 +98,12 @@ - (void)didLoad
5698
{
5799
[super didLoad];
58100

101+
ASCollectionView *view = self.view;
102+
view.collectionNode = self;
103+
59104
if (_pendingState) {
60105
_ASCollectionPendingState *pendingState = _pendingState;
61-
self.pendingState = nil;
62-
63-
ASCollectionView *view = self.view;
106+
self.pendingState = nil;
64107
view.asyncDelegate = pendingState.delegate;
65108
view.asyncDataSource = pendingState.dataSource;
66109
}
@@ -118,10 +161,13 @@ - (ASCollectionView *)view
118161
return (ASCollectionView *)[super view];
119162
}
120163

164+
#if RangeControllerLoggingEnabled
121165
- (void)visibilityDidChange:(BOOL)isVisible
122166
{
123-
167+
[super visibilityDidChange:isVisible];
168+
NSLog(@"%@ - visible: %d", self, isVisible);
124169
}
170+
#endif
125171

126172
- (void)clearContents
127173
{
@@ -139,12 +185,12 @@ - (void)clearFetchedData
139185

140186
- (ASRangeTuningParameters)tuningParametersForRangeType:(ASLayoutRangeType)rangeType
141187
{
142-
return [self.view tuningParametersForRangeType:rangeType];
188+
return [self.view.rangeController tuningParametersForRangeType:rangeType];
143189
}
144190

145191
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeType:(ASLayoutRangeType)rangeType
146192
{
147-
return [self.view setTuningParameters:tuningParameters forRangeType:rangeType];
193+
return [self.view.rangeController setTuningParameters:tuningParameters forRangeType:rangeType];
148194
}
149195

150196
- (void)reloadDataWithCompletion:(void (^)())completion

0 commit comments

Comments
 (0)