ASLayoutSpec Class Reference

Inherits from NSObject
Conforms to ASLayoutElement
Declared in ASLayoutSpec.h

Overview

A layout spec is an immutable object that describes a layout, loosely inspired by React.

  isMutable

Creation of a layout spec should only happen by a user in layoutSpecThatFits:. During that method, a layout spec can be created and mutated. Once it is passed back to ASDK, the isMutable flag will be set to NO and any further mutations will cause an assert.

@property (nonatomic, assign) BOOL isMutable

Declared In

ASLayoutSpec.h

  parent

Parent of the layout spec

@property (nullable, nonatomic, weak) id<ASLayoutElement> parent

Declared In

ASLayoutSpec.h

  child

Adds a child to this layout spec using a default identifier.

@property (nullable, strong, nonatomic) id<ASLayoutElement> child

Parameters

child

A child to be added.

Discussion

Every ASLayoutSpec must act on at least one child. The ASLayoutSpec base class takes the responsibility of holding on to the spec children. Some layout specs, like ASInsetLayoutSpec, only require a single child.

For layout specs that require a known number of children (ASBackgroundLayoutSpec, for example) a subclass should use this method to set the “primary” child. It can then use setChild:forIdentifier: to set any other required children. Ideally a subclass would hide this from the user, and use the setChild:forIdentifier: internally. For example, ASBackgroundLayoutSpec exposes a backgroundChild property that behind the scenes is calling setChild:forIdentifier:.

Declared In

ASLayoutSpec.h

  children

Adds childen to this layout spec.

@property (nullable, strong, nonatomic) NSArray<id<ASLayoutElement> > *children

Parameters

children

An array of ASLayoutElement children to be added.

Discussion

Every ASLayoutSpec must act on at least one child. The ASLayoutSpec base class takes the reponsibility of holding on to the spec children. Some layout specs, like ASStackLayoutSpec, can take an unknown number of children. In this case, the this method should be used. For good measure, in these layout specs it probably makes sense to define setChild: and setChild:forIdentifier: methods to do something appropriate or to assert.

Declared In

ASLayoutSpec.h