-
FlexLayout (4)Library 2022. 5. 16. 09:38
안녕하세요. 그린입니다🟢
이번 포스팅에서는 계속 쭉 이어서 FlexLayout에 대해 학습해보겠습니다!
주제는 4번 항목인 Absolute Positioning입니다🙌
Absolute Positioning을 직독직해 해보면 "절대 위치"로 해석이 됩니다.
그러면 우리는 Flexbox를 컨테이너 혹은 상위 뷰에서 어떤 위치로 배치할지에 대해 알아보겠다고 짐작할 수 있겠습니다!사용법
아래와 같이 위치를 잡기 위해서는 2가지가 있습니다.
상대적 위치로 지정하던지 아니면 절대적 위치로 지정하던지!
우리는 줄곧 이전 포스팅에서 대부분 상대적 위치를 통해 각 요소들을 잡았습니다.
그런데 이번 핵심은 절대적 위치입니다.
우선적으로 position 메서드를 사용합니다.
view.flex.position(.relative) // Default view.flex.position() // relative view.flex.position(.absolute)
요렇게 보면 relative 즉 상대적 위치가 디폴트 값입니다.
그런데 만약 상대적 위치를 고려하지 않고 절대적으로 위치를 잡아줘야되는 경우가 있습니다.
그럴때 absolute를 인자로 넣어주고 이제 나오는 메서드들을 이용해 상대적 위치를 잡아줄꺼야~ 라고 인식시켜줍니다.
그러면 상대적 위치는 어떻게 잡을 수 있을까요?
Absolute Positioning Method
공식 문서에서 절대적 위치를 잡아주는 메서드로 9가지를 설명하고 있습니다.
천천히 하나씩 보시죠!
1. top(: CGFloat) / top(: FPercent)
CGFloat값 혹은 퍼센트 값으로 넣어줄 수 있으며 자신과 상위의 상단 엣지간 거리를 지정해줍니다.
SwiftUI를 사용해보신적이 있다면 더 쉽게 다가올 수 있는 .padding(.top, 20)과 같은 느낌입니다.
view.flex.position(.absolute).top(10) view.flex.position(.absolute).top(10%)
2. bottom(: CGFloat) / bottom(:FPercent)
자신과 상위의 하단 엣지간 거리를 지정해줍니다.
view.flex.position(.absolute).bottom(10) view.flex.position(.absolute).bottom(10%)
3. left(: CGFloat) / left(: FPercent)
자신과 상위의 좌측 엣지의 거리간 거리를 지정해줍니다.
view.flex.position(.absolute).left(10) view.flex.position(.absolute).left(10%)
4. right(: CGFloat) / right(: FPercent)
자신과 상위의 우측 엣지의 거리간 거리를 지정해줍니다.
view.flex.position(.absolute).right(10) view.flex.position(.absolute).right(10%)
5. start(: CGFloat) / start(: FPercent)
자신의 시작점 포인트와 상위의 시작점 포인트간 거리를 지정해줍니다.
LTR에서는 left(), RTL에서는 right()로 대응합니다.
view.flex.position(.absolute).start(10) view.flex.position(.absolute).start(10%)
6. end(: CGFloat) / end(: FPercent)
자신의 엔드 포인트와 상위의 엔드 포인트간 거리를 지정해줍니다.
start와 더불어 LTR에서는 right(), RTL에서는 left()로 대응합니다.
view.flex.position(.absolute).end(10) view.flex.position(.absolute).end(10%)
7. vertically(: CGFloat) / vertically(: FPercent)
자신과 상위의 vertical(수직) 즉, 상하단에 해당하는 엣지간 거리를 지정해줍니다.
.top().bottom()의 코드와 같습니다.
view.flex.position(.absolute).vertically(10) view.flex.position(.absolute).vertically(10%)
8. horizontally(: CGFloat) / horizontal(: FPercent)
자신과 상위의 horizontal(수평) 즉, 좌우에 해당하는 엣지간 거리를 지정해줍니다.
.left().right()의 코드와 같습니다.
view.flex.position(.absolute).horizontally(10) view.flex.position(.absolute).horizontally(10%)
9. all(: CGFloat) / all(: FPercent)
자신과 상위의 모든 상하좌우에 해당하는 엣지간 거리를 지정해줍니다.
top().bottom().left().right()의 코드와 같습니다.
view.flex.position(.absolute).all(10) view.flex.position(.absolute).all(10%)
위의 메서드들로 상황에 따라 절대적 위치와 크기를 지정해줄 수 있습니다.
해당 절대위치로 크기/위치가 지정된 flexbox 즉 뷰는 동등한 다른 뷰 레이아웃에 영향을 주지 않습니다.
즉 절대위치를 활용한다면 Z축을 만들어 오버레이를 사용하는 효과를 얻을 수 있습니다.
아래와 같이 위의 항목들은 체이닝되어 사용할 수 있습니다!
view.flex.position(.absolute).top(10).right(10).width(100).height(50) view.flex.position(.absolute).left(20%).right(20%)
마무리
이번 주제는 레이아웃에 익숙하다면 충분히 술술 넘어가는 주제였습니다.
다만 꼭 필요한건 직접 구현해보면서 익혀보는게...
뒤돌아 까먹는게 코드🥲
[참고자료]
'Library' 카테고리의 다른 글
FlexLayout (6) (0) 2022.05.23 FlexLayout (5) (0) 2022.05.20 FlexLayout (3) (0) 2022.05.11 FlexLayout (2) (0) 2022.05.09 FlexLayout (1) (0) 2022.05.04