Library

FlexLayout (5)

GREEN.1229 2022. 5. 20. 09:45

안녕하세요. 그린입니다🟢

이번 포스팅에서는 FlexLayout의 Adjusting the Size 목록을 독파해보겠습니다🙌

 

Adjusting the size?

해석하면 사이즈를 적용하다 입니다.

UI 요소 및 뷰들의 레이아웃을 잡으면서 가장 중요하다고 까다로운것이 이 사이즈죠🥲

디자이너와 협업 시 피그마 등의 툴을 사용해 각 컴포넌트들이 어떤 사이즈를 가지고 있고 최대/최소 사이즈는 어떻게 설정되있는지등이 기재된걸 보고 개발자는 그걸 코드로 구현해줘야합니다.

이러한 작업이 없다면 원하는 디자인과는 다른 결과를 초래할거에요!

그렇기에 쉬울 수 있지만 가장 중요한 부분이라고 생각합니다😁

 

사이즈를 적용시키는 메서드

크게 3개로 나눌 수 있고 또 그 안에서 CGFloat로 수치를 줄것인지 퍼센트로 수치를 줄것인지 각 2개씩 가지고 있어 총 6개의 메서드가 있다고 생각하시면 됩니다.

해당 6개의 메서드들로 너비, 높이 그리고 그 둘을 합친 사이즈를 조절할 수 있습니다.

 

1. width(_ widht: CGFloat?)

뷰의 너비를 픽셀 단위로 지정합니다.

인자로 들어오는 값은 양수여야하고 nil이 들어오면 재설정을 하게 해줌으로 옵셔널 타입입니다.

view.flex.width(300)

2. width(_ percent: FPercent)

뷰의 너비를 퍼센트로 지정합니다.

값은 양수여야하고 동일하게 nil 값을 주어 재설정할 수 있습니다.

view.flex.width(30%)

3. height(_ height: CGFloat?)

뷰의 높이를 픽셀 단위로 지정합니다.

값은 양수여야하고 width와 마찬가지로 nil 값을 주어 재설정할 수 있습니다.

view.flex.height(50)

4. height(_ height: FPercent)

뷰의 높이를 퍼센트로 지정합니다.

값은 양수여야하고 동일하게 nil 값을 주어 재설정 할 수 있습니다.

view.flex.height(50%)

5. size(_ size: CGSize?)

뷰의 너비, 높이 모두 픽셀 단위로 지정합니다.

값은 양수여야하고 nil 값을 주어 재설정을 할 수 있습니다.

또한 하나의 값이 들어감으로 너비, 높이가 같은 값으로 설정됩니다.

view.flex.size(150)

6. size(_sizeLength: CGFloat?)

뷰의 너비, 높이를 픽셀 단위로 지정해 정사각형의 뷰를 만들어줍니다.

값은 양수여야하고 nil의 값으로 재설정을 해줄 수 있습니다.

사실상 위 메서드와 동일한 구현이라고 보입니다.

view.flex.size(150)

 

뷰의 최대, 최소 너비 및 높이 지정하기

FlexLayout에서는 뷰의 최대, 최소 너비 및 높이를 지정할 수 있는 메서드들이 있습니다.

레이아웃 내에서 최대, 최소 크기를 지정함으로 효과적인 제어가 가능합니다.

즉 한계를 두는것이죠!

max 즉 최대 지정이 효과적일때는 alignItems(.stretch)와 쓸때 특정한 지점을 벗어나서 증가하면 디자인 상 예쁘지 않게 보입니다.

이때 해당 max 메서드를 사용하면 딱 거기까지만 늘어나니 디자인의 심미적 요소를 충족시켜줄 수 있습니다.

min 즉 최소 지정도 마찬가지입니다.

그러면 한번 어떻게 지정하는지 8개의 메서드를 통해 알아보시죠!

 

1. minWidth(_ width: CGFloat?)

뷰의 최소 너비를 픽셀 단위로 지정합니다.

값은 양수여야하고 nil 값으로 재설정 할 수 있습니다.

view.flex.minWidth(50)

2. minWidth(_ width: FPercent)

뷰의 최소 너비를 퍼센트 단위로 지정합니다.

값은 양수여야하고 nil 값으로 재설정 할 수 있습니다.

view.flex.minWidth(50%)

3. maxWidth(_ width: CGFloat?)

뷰의 최대 너비를 픽셀 단위로 지정합니다.

값은 양수여야하고 nil 값으로 재설정 할 수 있습니다.

view.flex.maxWidth(100)

4. maxWidth(_ width: FPercent)

뷰의 최대 너비를 퍼센트 단위로 지정합니다.

값은 양수여야하고 nil 값으로 재설정 할 수 있습니다.

view.flex.maxWidth(90%)

5. minHeight(_ height: CGFloat?)

뷰의 최소 높이를 픽셀 단위로 지정합니다.

값은 양수여야하고 nil 값으로 재설정 할 수 있습니다.

view.flex.minHeight(50)

6. minHeight(_ height: FPercent)

뷰의 최소 높이를 퍼센트 단위로 지정합니다.

값은 양수여야하고 nil 값으로 재설정 할 수 있습니다.

view.flex.minHeight(50%)

7. maxHeight(_ height: CGFloat?)

뷰의 최대 높이를 픽셀 단위로 지정합니다.

값은 양수여야하고 nil 값으로 재설정 할 수 있습니다.

view.flex.maxHeight(100)

8. maxHeight(_ height: FPercent)

뷰의 최대 높이를 퍼센트 단위로 지정합니다.

값은 양수여야하고 nil 값으로 재설정 할 수 있습니다.

view.flex.maxHeight(90%)

이렇게 흔히 복합적으로 사용됩니다.

view.flex.width(of: view1).maxWidth(300)

 

AspectRatio

aspectRatio는 Yoga에서 도입한 속성으로 CSS에는 존재하지 않습니다.

종횡비로 해석이되는데 즉 너비와 높이의 비율을 지정해줄 수 있습니다.

즉 표현하자면 너비/높이로 표현됩니다.

예를들어 2의 수치를주면 너비가 2 높이는 1인 2:1 의 사이즈를 가진 뷰가 됩니다.

aspectRatio는 grow 설정 조건보다 우선순위가 높습니다.

또한 항목의 최대/최소 치수를 따르고 nil 속성을 주어 재설정을 할 수 있습니다.

만약 width, height가 설정되었다면 오버라이드된 수치가 무시됩니다.

아래와 같이 사용할 수 있습니다!

(너비 16 높이 9를 가진 16:9 비율의 뷰를 만드는 코드)

imageView.flex.aspectRatio(16/9)

주로 이미지나 아이콘의 수치를 잡아줄 때 사용이 되겠죠🙌

 

마무리

자 이렇게 또 아주 간단한 섹션을 끝냈습니다.

사이즈 정말 별거없고 SwiftUI에 익숙했던터라 다시 되새기는 느낌이 들었네요ㅎㅎ

다음 포스팅에서는 Margin으로 만나겠습니다!

 

[참고자료]

https://github.com/layoutBox/FlexLayout

 

GitHub - layoutBox/FlexLayout: FlexLayout adds a nice Swift interface to the highly optimized facebook/yoga flexbox implementati

FlexLayout adds a nice Swift interface to the highly optimized facebook/yoga flexbox implementation. Concise, intuitive & chainable syntax. - GitHub - layoutBox/FlexLayout: FlexLayout adds a ni...

github.com