부모에서 전달된 constrainedSize가 375pt x 812pt 일 때 calculatedLayoutThatFits를 통해서 사이즈를 계산하면 childNode를 wrapping한 layout size가 부모의 사이즈와 동일하게 계산되는 것을 확인 하 실 수가 있습니다.
즉, 다시 말하자면 child element의 크기에 따라 ASInsetLayoutSpec의 크기가 결정되기 때문에 ASInsetLayoutSpec가 사이즈를 가지기 위해서 본질적인 사이즈 또는 계산에 따른 사이즈가 설정 되어야합니다.
요점 정리
insets값은 child element의 margin값을 정의
ASInsetLayoutSpec가 사이즈를 가지기 위해서 본질적인 사이즈 또는 계산에 따른 사이즈가 설정 되어야합니다.
3. ASStackLayoutSpec
Texture에서 제공해주는 다양한 LayoutSpec중 가장 유용하고 강력한 LayoutSpec 입니다.
Flexbox는 다양한 화면 크기에서 일관된 레이아웃을 제공하도록 설계되어 있으며, Flexbox를 기반으로 child layout element의 위치와 크기를 결정합니다.
해당 레이아웃에서는 child layout element들에 대해서 세로 또는 가로 스택으로 정렬합니다.
Stack Layout은 다른 Stack Layout의 child layout element가 될 수 있으므로 ASStackLayoutSpec에서 제공해주는 모든 기능을 사용하여 거의 모든 레이아웃을 만들 수 있습니다.
ASStackLayoutSpec은 총 3가지의 convenience initialization를 제공합니다.
Parameter
Type
Description
direction
ASStackLayoutDirection
child layout elements에 대해서 순차적으로 쌓는 방향을 지정합니다. horizontalAlignment(.horizontal) 또는 verticalAlignment(.vertical) 설정에 따라서 justifyContent 및 alignItems가 적절하게 갱신됩니다.
적절히 ASStackLayoutSpec elements properties 과 Flexbox properties 활용하여 설계합니다.
거의 왠만한 Layout은 ASStackLayoutSpec으로 설계 할 수 있습니다.
4. ASOverlayLayoutSpec
명칭 그대로 Overlay 해주는 LayoutSpec으로써, 특정 Overlay 대상 노드를 특정 child 노드위에 Overlay시키는 LayoutSpec입니다.
최상단에 overlay되는 대상은 overlay: 에서 매개변수로 받으며 child: 에서 overlay되는 대상을 자식으로 가지는 layout element를 받습니다.
사용법
요점 정리
크기에 대해서 임의로 조절하기 위해선 child에 해당하는 layout element는 반드시 본질적인 사이즈 또는 계산에 따른 사이즈가 설정 되어야합니다.
overlay에 해당하는 layout element는 child에서 계산된 constrainedSize값을 받아서 처리합니다. (즉, blueNode의 사이즈가 줄어들면 redNode의 사이즈도 같이 줄어들게 됩니다. )
5. ASBackgroundLayoutSpec
Background를 정의해주는 LayoutSpec입니다.
ASBackgroundLayoutSpec은 ASOverlayLayoutSpec과 비슷해보지만 큰 차이점이라면 background에 해당하는 layout element가 child에 해당하는 layout element의 사이즈에 영향을 받습니다.
즉, background의 layout element의 사이즈는 child의 layout elements 사이즈에 의해 결정됩니다.
따라서, child에서 계산된 constrainedSize가 background layout element로 전달 되기 때문에, 크기에 대해서 임의로 조절하기 위해선 child에 해당하는 layout element는 반드시 본질적인 사이즈 또는 계산에 따른 사이즈가 설정 되어야합니다.
사용법
요점 정리
크기에 대해서 임의로 조절하기 위해선 child에 해당하는 layout element는 반드시 본질적인 사이즈 또는 계산에 따른 사이즈가 설정 되어야합니다.
background에 해당하는 layout element는 child에서 계산된 constrainedSize값을 받아서 처리합니다. (즉, redNode의 사이즈가 줄어들면 blueNode의 사이즈도 같이 줄어들게 됩니다. )
6. ASAbsoluteLayoutSpec
flexible하지 않으며 정의된 사이즈형태로 유지되며 layoutPosition에 따라서 움직임이 가능한 LayoutSpec입니다.
제공되는 API는 기본형태와 sizing option 형태 두가지로 나눠집니다.
여기서 눈여겨볼 점은 sizing options입니다.
OptionType
Description
.default
기본값으로써 가능한 최대크기로 랜더링을 합니다.
.sizeToFit
모든 children의 frame 결합체에 대해서 사이즈를 최소화된 크기로 계산을 합니다.
사용법
layoutPosition이나 size는 ASAbsoluteLayoutSpec이 아닌 children에 해당하는 layout elements 각각에 대해서 설정되어야합니다.
요점정리
position및 size는 각 child element에서 정의할 것
상황에 따라 sizing option 적절히 활용할 것
7. ASCenterLayoutSpec
특정 layout element를 가운데로 정렬하며 해당하는 layout element에 constraintedSize.max값을 전달해서 size를 계산합니다.