Swiftgram/examples/LayoutSpecExamples/Sample/LayoutExampleViewController.m
Hannah Troisi 7a373ac638 Update Layout Examples to ASDK 2.0 (#2551)
* Objective-c project updated to ASDK 2.0

* fix assets error

* [LayoutSpecExamples] Renamed new example project to be easier to type / find.

* [Bulid] Manually create Sample.xcscheme file to hopefully fix complaining bulid :).

* clean up project

* commentary on ASAbsoluteLayoutSpec

* address @maicki's comments
2016-11-06 13:47:48 -08:00

49 lines
1.8 KiB
Objective-C

//
// 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