forked from facebookarchive/AsyncDisplayKit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLayoutExampleViewController.m
More file actions
48 lines (36 loc) · 1.83 KB
/
LayoutExampleViewController.m
File metadata and controls
48 lines (36 loc) · 1.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//
// LayoutExampleViewController.m
// Sample
//
// Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
// This source code is licensed under the BSD-style license found in the
// LICENSE file in the root directory of this source tree. An additional grant
// of patent rights can be found in the PATENTS file in the same directory.
//
#import "LayoutExampleViewController.h"
#import "LayoutExampleNodes.h"
@interface LayoutExampleViewController ()
@property (nonatomic, strong) LayoutExampleNode *customNode;
@end
@implementation LayoutExampleViewController
- (instancetype)initWithLayoutExampleClass:(Class)layoutExampleClass
{
NSAssert([layoutExampleClass isSubclassOfClass:[LayoutExampleNode class]], @"Must pass a subclass of LayoutExampleNode.");
self = [super initWithNode:[ASDisplayNode new]];
if (self) {
self.title = @"Layout Example";
_customNode = [layoutExampleClass new];
[self.node addSubnode:_customNode];
BOOL needsOnlyYCentering = [layoutExampleClass isEqual:[HeaderWithRightAndLeftItems class]] ||
[layoutExampleClass isEqual:[FlexibleSeparatorSurroundingContent class]];
self.node.backgroundColor = needsOnlyYCentering ? [UIColor lightGrayColor] : [UIColor whiteColor];
__weak __typeof(self) weakself = self;
self.node.layoutSpecBlock = ^ASLayoutSpec*(__kindof ASDisplayNode * _Nonnull node, ASSizeRange constrainedSize) {
return [ASCenterLayoutSpec centerLayoutSpecWithCenteringOptions:needsOnlyYCentering ? ASCenterLayoutSpecCenteringY : ASCenterLayoutSpecCenteringXY
sizingOptions:ASCenterLayoutSpecSizingOptionMinimumXY
child:weakself.customNode];
};
}
return self;
}
@end