Hide ASLayoutOptions from the user

This commit is contained in:
rcancro
2015-08-28 14:30:50 -07:00
parent 15b3fd6eab
commit cbaf178950
19 changed files with 344 additions and 129 deletions

View File

@@ -14,13 +14,13 @@
#import "ASLayoutSpecUtilities.h"
#import "ASStackLayoutSpecUtilities.h"
#import "ASLayoutable.h"
#import "ASLayoutOptions.h"
static CGFloat crossOffset(const ASStackLayoutSpecStyle &style,
const ASStackUnpositionedItem &l,
const CGFloat crossSize)
{
ASLayoutOptions *layoutOptions = [ASLayoutSpec layoutOptionsForChild:l.child];
switch (alignment(layoutOptions.alignSelf, style.alignItems)) {
switch (alignment(l.child.layoutOptions.alignSelf, style.alignItems)) {
case ASStackLayoutAlignItemsEnd:
return crossSize - crossDimension(style.direction, l.layout.size);
case ASStackLayoutAlignItemsCenter:
@@ -49,15 +49,14 @@ static ASStackPositionedLayout stackedLayout(const ASStackLayoutSpecStyle &style
CGPoint p = directionPoint(style.direction, offset, 0);
BOOL first = YES;
auto stackedChildren = AS::map(unpositionedLayout.items, [&](const ASStackUnpositionedItem &l) -> ASLayout *{
ASLayoutOptions *layoutOptions = [ASLayoutSpec layoutOptionsForChild:l.child];
p = p + directionPoint(style.direction, layoutOptions.spacingBefore, 0);
p = p + directionPoint(style.direction, l.child.layoutOptions.spacingBefore, 0);
if (!first) {
p = p + directionPoint(style.direction, style.spacing, 0);
}
first = NO;
l.layout.position = p + directionPoint(style.direction, 0, crossOffset(style, l, crossSize));
p = p + directionPoint(style.direction, stackDimension(style.direction, l.layout.size) + layoutOptions.spacingAfter, 0);
p = p + directionPoint(style.direction, stackDimension(style.direction, l.layout.size) + l.child.layoutOptions.spacingAfter, 0);
return l.layout;
});
return {stackedChildren, crossSize};