iOS/SwfitUI

SwiftUI) Spacer(스페이서)를 알아보자

소들이 2022. 5. 28. 22:47

 

 

 

안녕하세요, 소들입니다 ... 😫

글을 오랜만에 쓰네요...

일주일에 1개는 꼭 쓰겠다고 다짐해놓고 무슨 일이냐고 하면,

뭐,, 네,, 회사 재택이 끝났습니다..ㅎ;;

사실 그거도 그거지만, 5월에 지금 현업 하는 게 너~~무 바빠서ㅜㅜ 정신이 없네요...;;;; 

 

쨌든 이번 포스팅에서는 SwiftUI의

 

Spacer 

 

라는 객체에 대해 알아볼 거예요!!!!

어렵진 않으나,, 처음엔 헷갈릴 수 있으니 차근차근 이해해 봅시당!! :)

모든 포스팅은 편의 말투로 합니다~!!

 

 

 

 

1. Spacer는 어떨 때 쓰나요?

 

자, Spacer의 애플의 정의를 먼저 보자면,

 

포함하는 스택 레이아웃의 주요 축을 따라 확장되거나,

스택에 포함되지 않은 경우, 두 축 모두에서 확장되는 유연한 공간

 

나는 리얼 애플 정의가 세상에서 제일 어려워 

여러분 우리가 타자칠 때 글자 사이를 띄우고 싶을 때 스페이스 바를 치잖음??

마찬가지로, View 간의 간격을 "띄우고 싶을 때" 사용하는 것이 바로 Spacer임!

 

바로 사용법부터 보자!!

 

 

 

 

자, 만약 위처럼 두 개의 Text의 HStack안에 들어 있음

이미 두 Text 사이에 일정 간격이 존재하는데요? 라 생각 할 수 있지만,

이는 이전 공부할 때 배웠듯이

HStack이라는 스택이 View를 배치할 때 사용하는 자체 Spacing이 있다고 했음!

(따로 설정하지 않을 시 default 값으로 설정 되지만, 그게 0일 수도 아닐 수도 있음)

 

따라서 만약 Spacing을 0으로 주면 이 두개의 Text가 붙어버림

 

 

 

 

이렇게!!!!

자, 근데 이렇게 둘이 챱! 붙어 있는 상태에서

나는 저 Text 사이에 스페이스바를 누르고 싶어! 둘 사이를 띄어주고 싶어! 란 생각이 들면,

 

 

 

 

이렇게 두 개의 Text 사이에 Spacer()라는 것을 써주면 됨!!!

그러면 Preview에 나온 것처럼 저 둘은 저렇게 완전 띄어지게 됨

 

으아니 나는 스페이스바 한번처럼 조금만 띄우고 싶은데? 

할 수도 있겠지만, 이렇게 띄워버리는 것이 바로 Spacer의 특징임

 

Spacer는 기본적으로 사용 가능한 전체 공간을 띄워버림

 

무슨 말이냐면, 현재 Text가 갖는 크기가 있을 거 아님?

그 크기를 제외하고 남은 여백을 다 띄워버린단 말

그래서 저런 모양이 나와버린 것!

 

일단 Spacer가 무엇인지에 대해 대충 감이 왔길!

 

 

 

2. Spacer를 중복해서 사용하면

 

자, 위 예제에서 만약 blue Text 뒤에도 Spacer를 써봤음

그럼 어떠케 되냐면

 

 

 

 

이렇게 됨

 

자 어떻게 이해를 하면 되냐면

아까 Spacer는 기본적으로 "사용 가능한 전체 공간을 띄움"이라고 했잖음?

 

근데 지금 HStack 안에 총 Spacer가 몇 개 있음? 2개 있잖음!!! 

따라서 사용 가능한 전체 공간을 2등분을 해버리고,

각각 yello Text 뒤에 그 공간만큼 여백 하나,  blue Text 뒤에 그 공간만큼 여백 하나 

이렇게 사이좋게 같은 크기의 여백들이 붙어버린 것

 

따라서,

Spacer를 n개 선언한다면, Spacer가 띄우는 크기가 n등분 되어버리는 것

 

만약 yello Text 앞에도 Spacer를 붙인다면?

 

 

 

 

Spacer가 총 3개가 되었으니, 띄울 수 있는 공간을 3등분 하여

각각 Spacer가 선언된 위치에 들어가게 된 것임!!!

(yellow Text 앞 / 뒤에 하나씩, blue Text 뒤에도 하나!)

 

 

 

 

3. Spacer의 여백 크기를 바꾸는 방법

 

자, 위에서 공부한 걸로 봤을 때 Spacer는

사용 가능한 전체 공간을 띄워버리기 때문에 

사용 가능한 공간이 얼마나 있냐에 따라 / 또 Spacer를 몇 개 선언했냐에 따라

Spacer로 인해 띄워지는 여백의 크기가 유동적이었음

 

그래서 이번에 공부할 것은

Spacer의 여백 크기를 내가 지정한는 방법임

 

 

 

3-1. minLength 파라미터 사용하기

 

Spacer를 생성할 때 위에서 썼던 것처럼 파라미터를 전달하지 않아도 되지만,

위처럼 파라미터로 minLength라는 값을 지정할 수 있음!!!

 

 

 

 

 

만약 다음과 같이

Text의 사이의 Spacing의 minLength 값을 100으로 줘버리면,

 

 

 

 

ktx타고 가면서 봐도 100보단 커보이는 듯한 여백

리신이 봐도 minLength 주든 안 주든 똑같아 보이는 여백

 

그 이유라 함은 파라미터 이름부터 "minLength"인 것처럼 

이때 설정하는 값은 "Spacer가 가지는 여백의 최소 보장되는 크기"임!!!

 

따라서 위처럼 Spacer의 여백이 100보단 클 경우엔 무시되어 버리고,

 

 

 

 

이렇게 만약 여백의 크기가 100보다 작아야 하는 경우,

이때는 Spacer의 여백이 최소 100은 보장됨!!

 

자 Spacer의 최소 여백을 설정하는 것이 minLength라고 했잖음?

Spacer의 minLength를 지정하지 않고 넣어도

 

 

 

blue Text의 뒤를 보면, 아주 살짝의 여백은 들어감!!

Spacer의 minLength를 설정하지 않았다 하더라도,

확장될 공간이 없다고 해서 아예 안 들어가지는 않고,  System의 기본 여백인 저만큼은 들어감

 

 

 

3-2. frame modifier를 이용하여 Spacer 여백의 크기를 지정

 

 

만약 유동적인 Spacer의 여백이 맘에 안들어! 직저 지정해줄래!!! 한다면

 

 

 

 

위처럼 Spacer에 대고 frame modifier를 호출하면

지정된 크기의 여백을 줄 수 있답니당 :)

 

 

 

 

 

 

 

.

.

.

도움이 돠었길 바라며 :)

오타 및 피드백 대환영~!!