Remove explicit passing of trait collection to setChild/Children

This commit is contained in:
ricky 2016-05-25 10:49:42 -07:00
parent a33966d4ae
commit c42b0dd33a
21 changed files with 59 additions and 181 deletions

View File

@ -1904,6 +1904,7 @@ void recursivelyTriggerDisplayForLayer(CALayer *layer, BOOL shouldBlock)
if ((_methodOverrides & ASDisplayNodeMethodOverrideLayoutSpecThatFits) || _layoutSpecBlock != NULL) {
ASLayoutSpec *layoutSpec = [self layoutSpecThatFits:constrainedSize];
layoutSpec.parent = self; // This causes upward propogation of any non-default layoutable values.
layoutSpec.traitCollection = self.asyncTraitCollection;
layoutSpec.isMutable = NO;
ASLayout *layout = [layoutSpec measureWithSizeRange:constrainedSize];
// Make sure layoutableObject of the root layout is `self`, so that the flattened layout will be structurally correct.

View File

@ -50,5 +50,6 @@
- (ASEnvironmentTraitCollection)environmentTraitCollection;
- (BOOL)isEqualToTraitCollection:(ASTraitCollection *)traitCollection;
@end

View File

@ -95,4 +95,14 @@
};
}
- (BOOL)isEqualToTraitCollection:(ASTraitCollection *)traitCollection
{
return self.displayScale == traitCollection.displayScale &&
self.horizontalSizeClass == traitCollection.horizontalSizeClass &&
self.verticalSizeClass == traitCollection.verticalSizeClass &&
self.userInterfaceIdiom == traitCollection.userInterfaceIdiom &&
self.traitCollectionContext == traitCollection.traitCollectionContext &&
self.forceTouchCapability == traitCollection.forceTouchCapability;
}
@end

View File

@ -24,9 +24,6 @@ NS_ASSUME_NONNULL_BEGIN
@param background A layoutable object that is laid out behind the child. If this is nil, the background is omitted.
*/
+ (instancetype)backgroundLayoutSpecWithChild:(id<ASLayoutable>)child background:(nullable id<ASLayoutable>)background;
+ (instancetype)backgroundLayoutSpecWithChild:(id<ASLayoutable>)child background:(nullable id<ASLayoutable>)background traitCollect:(nullable ASTraitCollection *)traitCollection;
- (void)setBackground:(id<ASLayoutable>)background traitCollection:(nullable ASTraitCollection *)traitCollection;
@end

View File

@ -13,7 +13,6 @@
#import "ASAssert.h"
#import "ASBaseDefines.h"
#import "ASLayout.h"
#import "ASTraitCollection.h"
static NSString * const kBackgroundChildKey = @"kBackgroundChildKey";
@ -22,27 +21,21 @@ static NSString * const kBackgroundChildKey = @"kBackgroundChildKey";
@implementation ASBackgroundLayoutSpec
- (instancetype)initWithChild:(id<ASLayoutable>)child background:(id<ASLayoutable>)background traitCollection:(ASTraitCollection *)traitCollection
- (instancetype)initWithChild:(id<ASLayoutable>)child background:(id<ASLayoutable>)background
{
if (!(self = [super init])) {
return nil;
}
ASDisplayNodeAssertNotNil(child, @"Child cannot be nil");
self.environmentTraitCollection = [traitCollection environmentTraitCollection];
[self setChild:child withTraitCollection:traitCollection];
[self setBackground:background traitCollection:traitCollection];
[self setChild:child];
self.background = background;
return self;
}
+ (instancetype)backgroundLayoutSpecWithChild:(id<ASLayoutable>)child background:(id<ASLayoutable>)background;
{
return [self backgroundLayoutSpecWithChild:child background:background traitCollect:nil];
}
+ (instancetype)backgroundLayoutSpecWithChild:(id<ASLayoutable>)child background:(nullable id<ASLayoutable>)background traitCollect:(nullable ASTraitCollection *)traitCollection
{
return [[self alloc] initWithChild:child background:background traitCollection:traitCollection];
return [[self alloc] initWithChild:child background:background];
}
/**
@ -67,12 +60,7 @@ static NSString * const kBackgroundChildKey = @"kBackgroundChildKey";
- (void)setBackground:(id<ASLayoutable>)background
{
[self setBackground:background traitCollection:nil];
}
- (void)setBackground:(id<ASLayoutable>)background traitCollection:(ASTraitCollection *)traitCollection
{
[super setChild:background forIdentifier:kBackgroundChildKey withTraitCollection:traitCollection];
[super setChild:background forIdentifier:kBackgroundChildKey];
}
- (id<ASLayoutable>)background

View File

@ -58,11 +58,6 @@ NS_ASSUME_NONNULL_BEGIN
sizingOptions:(ASCenterLayoutSpecSizingOptions)sizingOptions
child:(id<ASLayoutable>)child;
+ (instancetype)centerLayoutSpecWithCenteringOptions:(ASCenterLayoutSpecCenteringOptions)centeringOptions
sizingOptions:(ASCenterLayoutSpecSizingOptions)sizingOptions
child:(id<ASLayoutable>)child
traitCollection:(nullable ASTraitCollection *)traitCollection;
@end
NS_ASSUME_NONNULL_END

View File

@ -21,13 +21,12 @@
- (instancetype)initWithCenteringOptions:(ASCenterLayoutSpecCenteringOptions)centeringOptions
sizingOptions:(ASCenterLayoutSpecSizingOptions)sizingOptions
child:(id<ASLayoutable>)child
traitCollection:(ASTraitCollection *)traitCollection
child:(id<ASLayoutable>)child;
{
ASRelativeLayoutSpecPosition verticalPosition = [self verticalPositionFromCenteringOptions:centeringOptions];
ASRelativeLayoutSpecPosition horizontalPosition = [self horizontalPositionFromCenteringOptions:centeringOptions];
if (!(self = [super initWithHorizontalPosition:horizontalPosition verticalPosition:verticalPosition sizingOption:sizingOptions child:child traitCollection:traitCollection])) {
if (!(self = [super initWithHorizontalPosition:horizontalPosition verticalPosition:verticalPosition sizingOption:sizingOptions child:child])) {
return nil;
}
_centeringOptions = centeringOptions;
@ -39,15 +38,7 @@
sizingOptions:(ASCenterLayoutSpecSizingOptions)sizingOptions
child:(id<ASLayoutable>)child
{
return [self centerLayoutSpecWithCenteringOptions:centeringOptions sizingOptions:sizingOptions child:child traitCollection:nil];
}
+ (instancetype)centerLayoutSpecWithCenteringOptions:(ASCenterLayoutSpecCenteringOptions)centeringOptions
sizingOptions:(ASCenterLayoutSpecSizingOptions)sizingOptions
child:(id<ASLayoutable>)child
traitCollection:(nullable ASTraitCollection *)traitCollection
{
return [[self alloc] initWithCenteringOptions:centeringOptions sizingOptions:sizingOptions child:child traitCollection:traitCollection];
return [[self alloc] initWithCenteringOptions:centeringOptions sizingOptions:sizingOptions child:child];
}
- (void)setCenteringOptions:(ASCenterLayoutSpecCenteringOptions)centeringOptions

View File

@ -38,7 +38,6 @@ NS_ASSUME_NONNULL_BEGIN
@param child The wrapped child to inset.
*/
+ (instancetype)insetLayoutSpecWithInsets:(UIEdgeInsets)insets child:(id<ASLayoutable>)child;
+ (instancetype)insetLayoutSpecWithInsets:(UIEdgeInsets)insets child:(id<ASLayoutable>)child traitCollection:(nullable ASTraitCollection *)traitCollection;
@end

View File

@ -12,9 +12,9 @@
#import "ASAssert.h"
#import "ASBaseDefines.h"
#import "ASInternalHelpers.h"
#import "ASLayout.h"
#import "ASTraitCollection.h"
@interface ASInsetLayoutSpec ()
{
@ -42,26 +42,20 @@ static CGFloat centerInset(CGFloat outer, CGFloat inner)
@implementation ASInsetLayoutSpec
- (instancetype)initWithInsets:(UIEdgeInsets)insets child:(id<ASLayoutable>)child traitCollection:(nullable ASTraitCollection *)traitCollection
- (instancetype)initWithInsets:(UIEdgeInsets)insets child:(id<ASLayoutable>)child;
{
if (!(self = [super init])) {
return nil;
}
ASDisplayNodeAssertNotNil(child, @"Child cannot be nil");
_insets = insets;
self.environmentTraitCollection = [traitCollection environmentTraitCollection];
[self setChild:child withTraitCollection:traitCollection];
[self setChild:child];
return self;
}
+ (instancetype)insetLayoutSpecWithInsets:(UIEdgeInsets)insets child:(id<ASLayoutable>)child
{
return [self insetLayoutSpecWithInsets:insets child:child traitCollection:nil];
}
+ (instancetype)insetLayoutSpecWithInsets:(UIEdgeInsets)insets child:(id<ASLayoutable>)child traitCollection:(nullable ASTraitCollection *)traitCollection
{
return [[self alloc] initWithInsets:insets child:child traitCollection:traitCollection];
return [[self alloc] initWithInsets:insets child:child];
}
- (void)setInsets:(UIEdgeInsets)insets

View File

@ -11,6 +11,8 @@
#import <AsyncDisplayKit/ASLayoutable.h>
#import <AsyncDisplayKit/ASAsciiArtBoxCreator.h>
@class ASTraitCollection;
NS_ASSUME_NONNULL_BEGIN
/** A layout spec is an immutable object that describes a layout, loosely inspired by React. */
@ -23,6 +25,8 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (nonatomic, assign) BOOL isMutable;
@property (nonatomic, strong, nullable) ASTraitCollection *traitCollection;
- (instancetype)init;
/**
@ -46,7 +50,6 @@ NS_ASSUME_NONNULL_BEGIN
* property that behind the scenes is calling setChild:forIdentifier:.
*/
- (void)setChild:(id<ASLayoutable>)child;
- (void)setChild:(id<ASLayoutable>)child withTraitCollection:(ASTraitCollection *)traitCollection;
/**
* Adds a child with the given identifier to this layout spec.
@ -66,7 +69,6 @@ NS_ASSUME_NONNULL_BEGIN
* property that behind the scenes is calling setChild:forIdentifier:.
*/
- (void)setChild:(id<ASLayoutable>)child forIdentifier:(NSString *)identifier;
- (void)setChild:(id<ASLayoutable>)child forIdentifier:(NSString *)identifier withTraitCollection:(ASTraitCollection *)traitCollection;
/**
* Adds childen to this layout spec.
@ -80,7 +82,6 @@ NS_ASSUME_NONNULL_BEGIN
* setChild: and setChild:forIdentifier: methods to do something appropriate or to assert.
*/
- (void)setChildren:(NSArray<id<ASLayoutable>> *)children;
- (void)setChildren:(NSArray<id<ASLayoutable>> *)children withTraitCollection:(ASTraitCollection *)traitCollection;
/**
* Get child methods

View File

@ -114,48 +114,27 @@
}
- (void)setChild:(id<ASLayoutable>)child
{
id<ASEnvironment> parent = [child parent];
[self setChild:child withTraitCollection:[parent asyncTraitCollection]];
}
- (void)setChild:(id<ASLayoutable>)child withTraitCollection:(ASTraitCollection *)traitCollection
{
ASDisplayNodeAssert(self.isMutable, @"Cannot set properties when layout spec is not mutable");
id<ASLayoutable> finalLayoutable = [self layoutableToAddFromLayoutable:child];
_child = finalLayoutable;
[self propagateUpLayoutable:finalLayoutable];
ASEnvironmentStatePropagateDown(self, [traitCollection environmentTraitCollection]);
}
- (void)setChild:(id<ASLayoutable>)child forIdentifier:(NSString *)identifier
{
id<ASEnvironment> parent = [child parent];
[self setChild:child forIdentifier:identifier withTraitCollection:[parent asyncTraitCollection]];
}
- (void)setChild:(id<ASLayoutable>)child forIdentifier:(NSString *)identifier withTraitCollection:(ASTraitCollection *)traitCollection
{
ASDisplayNodeAssert(self.isMutable, @"Cannot set properties when layout spec is not mutable");
id<ASLayoutable> finalLayoutable = [self layoutableToAddFromLayoutable:child];
self.childrenWithIdentifier[identifier] = finalLayoutable;
ASEnvironmentStatePropagateDown(self, [traitCollection environmentTraitCollection]);
// TODO: Should we propagate up the layoutable at it could happen that multiple children will propagated up their
// layout options and one child will overwrite values from another child
// [self propagateUpLayoutable:finalLayoutable];
}
- (void)setChildren:(NSArray *)children
{
id<ASLayoutable> child = [children firstObject];
id<ASEnvironment> parent = [child parent];
[self setChildren:children withTraitCollection:[parent asyncTraitCollection]];
}
- (void)setChildren:(NSArray<id<ASLayoutable>> *)children withTraitCollection:(ASTraitCollection *)traitCollection
- (void)setChildren:(NSArray<id<ASLayoutable>> *)children
{
ASDisplayNodeAssert(self.isMutable, @"Cannot set properties when layout spec is not mutable");
@ -168,7 +147,6 @@
if (finalChildren.size() > 0) {
_children = [NSArray arrayWithObjects:&finalChildren[0] count:finalChildren.size()];
}
ASEnvironmentStatePropagateDown(self, [traitCollection environmentTraitCollection]);
}
- (id<ASLayoutable>)childForIdentifier:(NSString *)identifier
@ -186,6 +164,13 @@
return [_children copy];
}
- (void)setTraitCollection:(ASTraitCollection *)traitCollection
{
if ([traitCollection isEqualToTraitCollection:self.traitCollection] == NO) {
_traitCollection = traitCollection;
ASEnvironmentStatePropagateDown(self, [traitCollection environmentTraitCollection]);
}
}
#pragma mark - ASEnvironment

View File

@ -20,9 +20,6 @@ NS_ASSUME_NONNULL_BEGIN
@property (nullable, nonatomic, strong) id<ASLayoutable> overlay;
+ (instancetype)overlayLayoutSpecWithChild:(id<ASLayoutable>)child overlay:(nullable id<ASLayoutable>)overlay;
+ (instancetype)overlayLayoutSpecWithChild:(id<ASLayoutable>)child overlay:(nullable id<ASLayoutable>)overlay traitCollection:(nullable ASTraitCollection *)traitCollection;
- (void)setOverlay:(id<ASLayoutable> _Nullable)overlay traitCollection:(nullable ASTraitCollection *)traitCollection;
@end

View File

@ -13,42 +13,30 @@
#import "ASAssert.h"
#import "ASBaseDefines.h"
#import "ASLayout.h"
#import "ASTraitCollection.h"
static NSString * const kOverlayChildKey = @"kOverlayChildKey";
@implementation ASOverlayLayoutSpec
- (instancetype)initWithChild:(id<ASLayoutable>)child overlay:(id<ASLayoutable>)overlay traitCollection:(nullable ASTraitCollection *)traitCollection
- (instancetype)initWithChild:(id<ASLayoutable>)child overlay:(id<ASLayoutable>)overlay
{
if (!(self = [super init])) {
return nil;
}
ASDisplayNodeAssertNotNil(child, @"Child that will be overlayed on shouldn't be nil");
self.environmentTraitCollection = [traitCollection environmentTraitCollection];
[self setOverlay:overlay traitCollection:traitCollection];
[self setChild:child withTraitCollection:traitCollection];
self.overlay = overlay;
[self setChild:child];
return self;
}
+ (instancetype)overlayLayoutSpecWithChild:(id<ASLayoutable>)child overlay:(id<ASLayoutable>)overlay
{
return [self overlayLayoutSpecWithChild:child overlay:overlay traitCollection:nil];
}
+ (instancetype)overlayLayoutSpecWithChild:(id<ASLayoutable>)child overlay:(nullable id<ASLayoutable>)overlay traitCollection:(nullable ASTraitCollection *)traitCollection
{
return [[self alloc] initWithChild:child overlay:overlay traitCollection:traitCollection];
return [[self alloc] initWithChild:child overlay:overlay];
}
- (void)setOverlay:(id<ASLayoutable>)overlay
{
[self setOverlay:overlay traitCollection:nil];
}
- (void)setOverlay:(id<ASLayoutable> _Nullable)overlay traitCollection:(nullable ASTraitCollection *)traitCollection
{
return [super setChild:overlay forIdentifier:kOverlayChildKey withTraitCollection:traitCollection];
[super setChild:overlay forIdentifier:kOverlayChildKey];
}
- (id<ASLayoutable>)overlay

View File

@ -36,7 +36,6 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic, assign) CGFloat ratio;
+ (instancetype)ratioLayoutSpecWithRatio:(CGFloat)ratio child:(id<ASLayoutable>)child;
+ (instancetype)ratioLayoutSpecWithRatio:(CGFloat)ratio child:(id<ASLayoutable>)child traitCollection:(nullable ASTraitCollection *)traitCollection;
@end

View File

@ -15,9 +15,9 @@
#import "ASAssert.h"
#import "ASBaseDefines.h"
#import "ASInternalHelpers.h"
#import "ASLayout.h"
#import "ASTraitCollection.h"
@implementation ASRatioLayoutSpec
{
@ -26,15 +26,10 @@
+ (instancetype)ratioLayoutSpecWithRatio:(CGFloat)ratio child:(id<ASLayoutable>)child
{
return [self ratioLayoutSpecWithRatio:ratio child:child traitCollection:nil];
return [[self alloc] initWithRatio:ratio child:child];
}
+ (instancetype)ratioLayoutSpecWithRatio:(CGFloat)ratio child:(id<ASLayoutable>)child traitCollection:(ASTraitCollection *)traitCollection
{
return [[self alloc] initWithRatio:ratio child:child traitCollection:traitCollection];
}
- (instancetype)initWithRatio:(CGFloat)ratio child:(id<ASLayoutable>)child traitCollection:(ASTraitCollection *)traitCollection
- (instancetype)initWithRatio:(CGFloat)ratio child:(id<ASLayoutable>)child;
{
if (!(self = [super init])) {
return nil;
@ -42,8 +37,7 @@
ASDisplayNodeAssertNotNil(child, @"Child cannot be nil");
ASDisplayNodeAssert(ratio > 0, @"Ratio should be strictly positive, but received %f", ratio);
_ratio = ratio;
self.environmentTraitCollection = [traitCollection environmentTraitCollection];
[self setChild:child withTraitCollection:traitCollection];
[self setChild:child];
return self;
}

View File

@ -54,12 +54,6 @@ NS_ASSUME_NONNULL_BEGIN
sizingOption:(ASRelativeLayoutSpecSizingOption)sizingOption
child:(id<ASLayoutable>)child;
+ (instancetype)relativePositionLayoutSpecWithHorizontalPosition:(ASRelativeLayoutSpecPosition)horizontalPosition
verticalPosition:(ASRelativeLayoutSpecPosition)verticalPosition
sizingOption:(ASRelativeLayoutSpecSizingOption)sizingOption
child:(id<ASLayoutable>)child
traitCollection:(nullable ASTraitCollection *)traitCollection;
/*!
* @discussion convenience initializer for a ASRelativeLayoutSpec
* @param horizontalPosition how to position the item on the horizontal (x) axis
@ -71,8 +65,7 @@ NS_ASSUME_NONNULL_BEGIN
- (instancetype)initWithHorizontalPosition:(ASRelativeLayoutSpecPosition)horizontalPosition
verticalPosition:(ASRelativeLayoutSpecPosition)verticalPosition
sizingOption:(ASRelativeLayoutSpecSizingOption)sizingOption
child:(id<ASLayoutable>)child
traitCollection:(nullable ASTraitCollection *)traitCollection;
child:(id<ASLayoutable>)child;
@end

View File

@ -9,15 +9,10 @@
#import "ASInternalHelpers.h"
#import "ASLayout.h"
#import "ASTraitCollection.h"
@implementation ASRelativeLayoutSpec
- (instancetype)initWithHorizontalPosition:(ASRelativeLayoutSpecPosition)horizontalPosition
verticalPosition:(ASRelativeLayoutSpecPosition)verticalPosition
sizingOption:(ASRelativeLayoutSpecSizingOption)sizingOption
child:(id<ASLayoutable>)child
traitCollection:(ASTraitCollection *)traitCollection
- (instancetype)initWithHorizontalPosition:(ASRelativeLayoutSpecPosition)horizontalPosition verticalPosition:(ASRelativeLayoutSpecPosition)verticalPosition sizingOption:(ASRelativeLayoutSpecSizingOption)sizingOption child:(id<ASLayoutable>)child
{
if (!(self = [super init])) {
return nil;
@ -26,23 +21,13 @@
_horizontalPosition = horizontalPosition;
_verticalPosition = verticalPosition;
_sizingOption = sizingOption;
self.environmentTraitCollection = [traitCollection environmentTraitCollection];
[self setChild:child withTraitCollection:traitCollection];
[self setChild:child];
return self;
}
+ (instancetype)relativePositionLayoutSpecWithHorizontalPosition:(ASRelativeLayoutSpecPosition)horizontalPosition verticalPosition:(ASRelativeLayoutSpecPosition)verticalPosition sizingOption:(ASRelativeLayoutSpecSizingOption)sizingOption child:(id<ASLayoutable>)child
{
return [self relativePositionLayoutSpecWithHorizontalPosition:horizontalPosition verticalPosition:verticalPosition sizingOption:sizingOption child:child traitCollection:nil];
}
+ (instancetype)relativePositionLayoutSpecWithHorizontalPosition:(ASRelativeLayoutSpecPosition)horizontalPosition
verticalPosition:(ASRelativeLayoutSpecPosition)verticalPosition
sizingOption:(ASRelativeLayoutSpecSizingOption)sizingOption
child:(id<ASLayoutable>)child
traitCollection:(ASTraitCollection *)traitCollection
{
return [[self alloc] initWithHorizontalPosition:horizontalPosition verticalPosition:verticalPosition sizingOption:sizingOption child:child traitCollection:traitCollection];
return [[self alloc] initWithHorizontalPosition:horizontalPosition verticalPosition:verticalPosition sizingOption:sizingOption child:child];
}
- (void)setHorizontalPosition:(ASRelativeLayoutSpecPosition)horizontalPosition

View File

@ -71,18 +71,7 @@ NS_ASSUME_NONNULL_BEGIN
@param alignItems Orientation of the children along the cross axis
@param children ASLayoutable children to be positioned.
*/
+ (instancetype)stackLayoutSpecWithDirection:(ASStackLayoutDirection)direction
spacing:(CGFloat)spacing
justifyContent:(ASStackLayoutJustifyContent)justifyContent
alignItems:(ASStackLayoutAlignItems)alignItems
children:(NSArray<id<ASLayoutable>> *)children;
+ (instancetype)stackLayoutSpecWithDirection:(ASStackLayoutDirection)direction
spacing:(CGFloat)spacing
justifyContent:(ASStackLayoutJustifyContent)justifyContent
alignItems:(ASStackLayoutAlignItems)alignItems
children:(NSArray<id<ASLayoutable>> *)children
traitCollection:(nullable ASTraitCollection *)traitCollection;
+ (instancetype)stackLayoutSpecWithDirection:(ASStackLayoutDirection)direction spacing:(CGFloat)spacing justifyContent:(ASStackLayoutJustifyContent)justifyContent alignItems:(ASStackLayoutAlignItems)alignItems children:(NSArray<id<ASLayoutable>> *)children;
/**
* @return A stack layout spec with direction of ASStackLayoutDirectionVertical

View File

@ -19,7 +19,6 @@
#import "ASStackLayoutSpecUtilities.h"
#import "ASStackUnpositionedLayout.h"
#import "ASThread.h"
#import "ASTraitCollection.h"
@implementation ASStackLayoutSpec
{
@ -28,26 +27,12 @@
- (instancetype)init
{
return [self initWithDirection:ASStackLayoutDirectionHorizontal spacing:0.0 justifyContent:ASStackLayoutJustifyContentStart alignItems:ASStackLayoutAlignItemsStart children:nil traitCollection:nil];
return [self initWithDirection:ASStackLayoutDirectionHorizontal spacing:0.0 justifyContent:ASStackLayoutJustifyContentStart alignItems:ASStackLayoutAlignItemsStart children:nil];
}
+ (instancetype)stackLayoutSpecWithDirection:(ASStackLayoutDirection)direction
spacing:(CGFloat)spacing
justifyContent:(ASStackLayoutJustifyContent)justifyContent
alignItems:(ASStackLayoutAlignItems)alignItems
children:(NSArray *)children
+ (instancetype)stackLayoutSpecWithDirection:(ASStackLayoutDirection)direction spacing:(CGFloat)spacing justifyContent:(ASStackLayoutJustifyContent)justifyContent alignItems:(ASStackLayoutAlignItems)alignItems children:(NSArray *)children
{
return [self stackLayoutSpecWithDirection:direction spacing:spacing justifyContent:justifyContent alignItems:alignItems children:children traitCollection:nil];
}
+ (instancetype)stackLayoutSpecWithDirection:(ASStackLayoutDirection)direction
spacing:(CGFloat)spacing
justifyContent:(ASStackLayoutJustifyContent)justifyContent
alignItems:(ASStackLayoutAlignItems)alignItems
children:(NSArray<id<ASLayoutable>> *)children
traitCollection:(ASTraitCollection *)traitCollection
{
return [[self alloc] initWithDirection:direction spacing:spacing justifyContent:justifyContent alignItems:alignItems children:children traitCollection:traitCollection];
return [[self alloc] initWithDirection:direction spacing:spacing justifyContent:justifyContent alignItems:alignItems children:children];
}
+ (instancetype)verticalStackLayoutSpec
@ -64,12 +49,7 @@
return stackLayoutSpec;
}
- (instancetype)initWithDirection:(ASStackLayoutDirection)direction
spacing:(CGFloat)spacing
justifyContent:(ASStackLayoutJustifyContent)justifyContent
alignItems:(ASStackLayoutAlignItems)alignItems
children:(NSArray *)children
traitCollection:(ASTraitCollection *)traitCollection
- (instancetype)initWithDirection:(ASStackLayoutDirection)direction spacing:(CGFloat)spacing justifyContent:(ASStackLayoutJustifyContent)justifyContent alignItems:(ASStackLayoutAlignItems)alignItems children:(NSArray *)children
{
if (!(self = [super init])) {
return nil;
@ -81,8 +61,7 @@
_alignItems = alignItems;
_justifyContent = justifyContent;
self.environmentTraitCollection = [traitCollection environmentTraitCollection];
[self setChildren:children withTraitCollection:traitCollection];
[self setChildren:children];
return self;
}

View File

@ -24,7 +24,6 @@ NS_ASSUME_NONNULL_BEGIN
@param children Children to be positioned at fixed positions, each conforms to ASStaticLayoutable
*/
+ (instancetype)staticLayoutSpecWithChildren:(NSArray<id<ASStaticLayoutable>> *)children;
+ (instancetype)staticLayoutSpecWithChildren:(NSArray<id<ASStaticLayoutable>> *)children traitCollection:(nullable ASTraitCollection *)traitCollection;
@end

View File

@ -13,32 +13,25 @@
#import "ASLayoutSpecUtilities.h"
#import "ASInternalHelpers.h"
#import "ASLayout.h"
#import "ASTraitCollection.h"
@implementation ASStaticLayoutSpec
+ (instancetype)staticLayoutSpecWithChildren:(NSArray *)children
{
return [self staticLayoutSpecWithChildren:children traitCollection:nil];
}
+ (instancetype)staticLayoutSpecWithChildren:(NSArray<id<ASStaticLayoutable>> *)children traitCollection:(ASTraitCollection *)traitCollection
{
return [[self alloc] initWithChildren:children traitCollection:traitCollection];
return [[self alloc] initWithChildren:children];
}
- (instancetype)init
{
return [self initWithChildren:@[] traitCollection:nil];
return [self initWithChildren:@[]];
}
- (instancetype)initWithChildren:(NSArray *)children traitCollection:(ASTraitCollection *)traitCollection
- (instancetype)initWithChildren:(NSArray *)children
{
if (!(self = [super init])) {
return nil;
}
self.environmentTraitCollection = [traitCollection environmentTraitCollection];
[self setChildren:children withTraitCollection:traitCollection];
self.children = children;
return self;
}