ASAbsoluteLayoutSpec
:绝对布局,使用方法和原生的绝对布局类似,frame布局
imageLayout.style.layoutPosition = CGPointMake(100, 100);
imageLayout.style.preferredLayoutSize = ASLayoutSizeMake(ASDimensionMake(100), ASDimensionMake(100));
ASAbsoluteLayoutSpec *absoluteLayout = [ASAbsoluteLayoutSpec absoluteLayoutSpecWithChildren:@[imageLayout]];
ASWrapperLayoutSpec
:填充整个视图
//swift
let imageLayout = ASWrapperLayoutSpec(layoutElement: imageNode)//填充整个试图
//object-c
ASWrapperLayoutSpec *imageLayout = [ASWrapperLayoutSpec wrapperWithLayoutElement:imageNode];
ASRelativeLayoutSpec
:用来方便描述child在父控件中边角特殊位置。例如:左上角,上边界中间,右上角,左边界中间,正中间,右边界中间,左下角,下边界中间,右下角。
AsCenterlayoutSpec
:是ASRelativeLayoutSpec
的子类,专用于描述child在父控件中水平居中,垂直居中,正中。
//swift
let relativeLaout = ASRelativeLayoutSpec(horizontalPosition: .start, verticalPosition: .start, sizingOption: .minimumWidth, child: textNode)
//swift
let relativeLaout = ASCenterLayoutSpec(centeringOptions: .XY,
sizingOptions: .minimumXY,
child: textNode)//居中显示
//object-c
self.childNodeA.style.preferredSize = CGSizeMake(100, 100);
ASRelativeLayoutSpec *relativeLayout = [ASRelativeLayoutSpec relativePositionLayoutSpecWithHorizontalPosition:ASRelativeLayoutSpecPositionEnd verticalPosition:ASRelativeLayoutSpecPositionStart sizingOption:ASRelativeLayoutSpecSizingOptionDefault child:self.childNodeA];
//object-c
self.childNodeA.style.preferredSize = CGSizeMake(100, 100);
ASCenterLayoutSpec *relativeLayout = [ASCenterLayoutSpec centerLayoutSpecWithCenteringOptions:ASCenterLayoutSpecCenteringXY sizingOptions:ASCenterLayoutSpecSizingOptionDefault child:self.childNodeA];
ASOverlayLayoutSpec
以及 ASBackgroundLayoutSpec
这种控件用来描述z轴(在屏幕上展示也就是前后)方向上的两个空间的位置关系., 整个控件的大小由child大小决定
。
区别两者的关键点:
- overlay控件会覆盖于child控件的正上方
- background控件会作为背景位于child控件正下方
相同点:
- 整个控件的大小由child大小决定
ASOverlayLayoutSpec(child: imageLayout, overlay: textLayout)
ASBackgroundLayoutSpec(child: imageNode, background: textNode)
ASInsetLayoutSpec
:比较常用的一个类,距离父容器内边距
ASInsetLayoutSpec *inset = [ASInsetLayoutSpec insetLayoutSpecWithInsets:UIEdgeInsetsZero child:_childNode];
ASRatioLayoutSpec
:也是比较常用的一个类,设置自身的宽高比,例如正方形的视图
ASRatioLayoutSpec *ratioLayout = [ASRatioLayoutSpec ratioLayoutSpecWithRatio:1.0f child:self.childNodeA];
ASCornerLayoutSpec
:角标布局,适用于类似于角标的布局
let cornerSpec = ASCornerLayoutSpec(child: avatarNode, corner: badgeNode, location: .topRight)
cornerSpec.offset = CGPoint(x: -3, y: 3)
offset
是控件的Center的偏移