티스토리 뷰

반응형

 

안녕하세요 :) Zedd입니다.

ㅇㅏ니 벌써 이렇게 추우면....한겨울에는 어떻게 살죠..?

아무튼 어제 https://zeddios.tistory.com/860

 

iOS 13+ ) UIBarAppearance 와 UINavigationBarAppearance

안녕하세요 :) Zedd입니다. 지금 쓰고있는 글들이 참 많은데....중간에 막혀서 더 이어가질 못하고 있네요.... 구글링과 영상을 아무리봐도 이해가 안감...ㅠㅠㅠ 근데 그러던 와중에 또 iOS13에서 NavigationBar..

zeddios.tistory.com

iOS13에서 새로 나온 UIBarAppearance을 잠깐 봤는데....

오늘은 standard / compact / scrollEdge Appearance에 대해서 공부해보겠습니다.

꼭!!! 위 글을 읽고와주세요.

 

그럼 일단  standard / compact / scrollEdge Appearance가 모냐..!

제목에서도 볼 수 있듯이..NavigationBar의 프레젠테이션 스타일을 각각 나타냅니다.

 

자..뭔가 서로 다르긴 한 것 같은데 아직은 잘 모르겠네요.

하나씩 봅시다.

 

standardAppearance

The appearance settings for a standard-height navigation bar.

딱히 번역은 안할게요..영어가 더 많은 번역이 되어버림..ㅎ

 

wwdc에서 추가한 말을..더 하자면, LargeTitle이 없는 size.

그러니까 standard size의 navigationBar의 appearance settings입니다. 

 

이 친구는 UINavigationBarAppearance타입입니다. 

 

요 프로퍼티의 기본값!!은 시스템의 기본 appearance 설정이 포함된 객체라고 해요.

그래서 어제..

 

이런코드를 작성했었습니다.

 

그냥 기본 높이의 navigation Bar를 사용할때는 이거 쓰면 되는 느낌?

 

다음 

 

compactAppearance

compact라고 하니까 그러니까..뭔가 진짜 컴팩트한..?
아까 사진에서도 봤듯이.

 

navigation bar의 높이가 아까보다 작죠?

이 compactAppearance는

compact-height navigation bar의 appearance setting이라고 해요.

 

WWDC에서 말하길, 작은 iPhone에서 landscape일 때

요 compactAppearance가 된다고 하는 것 같은데..

한번 봅시다.

 

 

근데 iOS13이전에도 landscape때는 오른쪽 처럼 되잖아요..?

그냥 이름이 붙은건가..? 저런 "모양"은 compactAppearance다..! 이렇게..?

 

암튼..타입은 UINavigationBarAppearance?으로 옵셔널이구요.

만약 이 프로퍼티가 nil이라면 standardAppearance안에 있는 세팅을 똑같이 가져간다고 합니다.

 

다음 

 

scrollEdgeAppearance

scrollable한 content의 edge가 NavigationBar에 일치하는 edge에 도달 할 때

appearance settings입니다.

 

아니 먼 개소리..

 

일단 타입은 compact와 마찬가지로 UINavigationBarAppearance? 타입이구요. 

navigation interface가 scrollView를 포함된 경우에,

scrollView contents의 일부가 navigation bar 아래(underneath)에 나타납니다.

 

스크롤된 content의 edge가 해당 bar에 도달하면,

UIKit이 이 프로퍼티의 appearance settings을 적용한다고 합니다.

 

만약 이 프로퍼티의 value가 nil이면,

UIKit은 standardAppearance 프로퍼티안에 있는 세팅들을 좀 수정해서 사용한다고 해요.

(UIKit uses a modified version of the settings found in the standardAppearance property.)

 

그럼..일단 써보겠음 ㅎ..

 

Navgiation interface안에 scrollView가 포함된 경우에..라고 했으니 

 

저는 TextView를 넣어줄게요.

근데 이게...WWDC에서는 따로 언급을 안한 것 같은데...^_ㅠ..아니면 제가 놓친걸수도 읶지만..

이 scrollEdgeAppearance는 LargeTitle일때만 동작하는것 같아요?!

 

아무튼..그러니까..

 

LargeTitle을 사용하도록 해주겠습니다.

 

그리고

이렇게 해줘보겠습니ㄴ다.

그냥 TitleAttribute를 줬구요..마지막에 scrollEdgeAppearance에 넣어준 것을 볼 수 있죠!!

 

....ㅋ

 

ㅋ...!!!

 

아니 제가 원래 이런데 제가...이상하게 생각하는건가요 혹시..!?!?!?

아니 만약에 원래 그렇다면 굳이 왜..........왜그랬지..? 저 잠깐 번쩍이는건 ㅇㅓ떻게 설명..?

 

아니 솔직히 이상하자나....

 

그러니까 제가 예상한 이 scrollEdgeAppearance의 행동(?)은

 

"스크롤된 content의 edge가 해당 bar에 도달하면,

UIKit이 이 프로퍼티의 appearance settings을 적용한다고 합니다."

 

라고 했으니까..

제가

 

이렇게 titleTextAttribute를 줬으니까.

 

한글만 그러나 싶어서 영어로도 해봄..근데 영어도 똑같음

이때 systemFont 40으로 크게 나와야 하는거 아니냐는거죠..근데 왜 어쩔땐 위에게 나오고

 

어쩔땐 저 titleAttribute가 적용돼서 이렇게 나오지..?

왜이러지..

근데 지금 내가 보면 버그같지만 원래 기능이 이런건가..?라는 생각이 들게 만드는 이유가 있음;;

 

왼쪽처럼 살살 올리면..내가 지정해준 titleAttribute가 적용이 안되고

막 오른쪽 처럼 쎄게;;;; 스크롤하면 적용됨

 

아니 그래서 뭔가 이게 정상인데...나 혼자 버그라고 생각하는건가..?라고 생각하게 만듬ㅡㅡ

 

+) 근데 iOS13이전에서..저는 iOS12.2긴 한데

 

이렇게 설정해주고, 빌드하면

 

제가 생각한대로 나오거든요..?

근데 UINUINavigationAppearnce로 하면 왜그러지..

 

 

 

 

아무튼...오늘

standard / compact / scrollEdge Appearance에 대해서 공부를 해봤는데..

사실 그냥 애플이 이름만 붙힌 느낌..이긴 하지만..

이제야 이게 뭔지 알았네요! 후련한 기분 XD

 

하지만 ㅈㅔ 버그는 아직 고쳐지지않았는데요..

다음 공부할 때 왠지 고칠 수 있을 것 같은 느낌 ㅎㅎ

 

 

틀린 부분이 있다면 꼭!! 댓글로 남겨주세요 :D

 

 

 

 

반응형