티스토리 뷰

iOS

iOS ) ContentInset

Zedd0202 2019. 9. 8. 20:48
반응형


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

아 contentInset이 저를 너무 빡치게하네용 :D


빡치는 이유는 단 하나입니다.

제가 contentInset을 잘 이해 못하고 있ㄱ다!!!!!!!!!!!!!!!!!!!!!

잘 알면 안빡침

이건 진리다


암튼 공부 시작



ContentInset



contentInset이색...아니 이칭구는 :)

UIScrollView안에 있는 프로퍼티이구요.

정의는 contentView가 safe area 또는 스크롤뷰 모서리(edges)에 삽입되는 사용자 지정 거리...


UIEdgeInsets타입입니다.

얘가 뭔지는 안다룰게요.


이 프로퍼티를 사용하여 content와 contentView의 가장자리의 간격을 확장하세요. 

size의 단위는 pt이며, 기본값은 UIEdgeInsetsZero입니다. 

기본적으로 UIKit은 겹치는 bar를 조정하기 위해 content inset을 자동으로 조정합니다.

이 프로퍼티를 사용하면 사용자지정 content를 수용할 수 있도록 거리를 더 확장 할 수 있습니다.

adjustedContentInset프로퍼티를 사용하여 safe area과 custom inset을 모두 조정합니다.

safe area이 적용되는 방식을 변경하려면 contentInsetAdjustmentBehavior 프로퍼티를 수정하세요. 


네~~저를 빡치게 한 칭구 contentInsetAdjustmentBehavior가 나왔네욥~!~!~

ㅎㅎ


자 암튼 차근차근히 봐봅시다.

먼저 contentInset이 어떤건지 UI로 살펴본다음에....

그냥 이;거면 예제 되겠지..?

아 근데 이거 좀 다른 이야기 인데 저기 왼쪽에 살짝 떨어져 읶ㅆ는거요

separator line저거 왼쪽에.. 살짝 띄워져 있잖슴

저는 이게 버근줄 알았는데..



TableView에 저기 automatic인데



custom으로 바꿔보면 기본적으로 15가 되어있어..

왜지...?? 왜 15가 기본적으로 띄워져 있는거지..? 당연히 0으로 주면

딱 달라붙게 댐

아니 왜지???????

아니 왜 하필 왼쪽만 15가 떨어져있는거지?

그게 왜 기본이지...??? 왜죠 애플..? ㅁ


암튼 지금/; 이게 중요한게 아니니까 넘어갑시다.



을 ㅎㅐ줘보겠ㅅ금



100pt만큼 떨어져 있게 댐

content와 가장자리와의 간격이랬으니...

top을 100줬으니까 위 결과가 나오는게 당연하죠?





너구나 씬이..이것도 공부해야하는디





오 여기서 흥미로운 사실은 



오른쪽을 보시면 아시겠지만

bounds의 y가 -100으로 되었군요...

스크롤이 되는것 (?) 그니까 스크롤...이 되는게 곧 bounds가 변하는거잖아요? 

(==contentOffset이 변함)


contentInset.top을 +100으로 했는데, 

왜 contentOffset.y를 -100으로 한 것(=tableView의 bounds.origin.y가 -100)과 똑같아질까요? 


자ㅏ 그럼 contentInset을 -100으로 하면 contentOffset은 +100이 될까욘???



tablerView그러니까 scrollview의 bounds의 y가 100이 되었군요..!!

왜 contentInset을 변경하면 contentOffset이 변할까!! 이게 핵심이군요..


제가 설명을 뭔가 당연하게도(?) tableView같이 vertical한 scrollView기준으로 말하고있는데..

참고부탁 ㅎ

contentInset은 contentInset top말하는거고, contentOffset은 contentOffset y말하는 거임 



contentInset top이 x만큼 변하니 contentOffset y가 -x만큼 변한다.

이러니까 뭔가 contentInset과 contentOffset의 관계가 반비례한다 뭐 이렇ㄱㅔ 볼 수 있는데.


그럼 contentOffset이 변한다고해서 contentInset이 변할까요?

그건 아닙니다!!!


그럼 지금부터 왜 contentInset이 바뀌면 contentOffset이 바뀌는지 설명할건데..

만약 제가 설명한게 틀리면 이거 너무 크리티컬 하니까..꼭 좀 알려주세요 ㅠ

옛날글에 있는 사진 우려먹기...

암튼 지금 scrollView의 contentOffset.origin은 (0,0)입니다.




bounds가 바뀔거니까 scrollView의 contentOffset이 바뀌겠군요. 



자 이것이 contentOffset의 정의?인데요, 

"contentView의 origin이 scrollView의 origin에서 offset되는 지점"

저기가 scrollView의 bounds의 origin. 즉 scrollView의 contentOffset의 x, y입니다.

지금은 contentInset이 .zero인건 참고.



그럼 contentInset의 top을 100 을 줘보겠습니다.


ㅇㅇ

그럼 이런 생각이 들죠...


아 contentOffet은 contentVIew의 origin과 scrollView의 origin의 offset이래매

contentView가 밑으로 내려왔으니..contentOffset y가 +100된거 아냐?


아악 저도 이거때문에 헷갈려 미치는 줄 ㅎ

후......자괴감 ㅎ;;;; 




암튼 

"contentOffset.y가 +100된거 아님?"은

아닙니다..!!



contentView는 top에서부터 100떨어진 곳에서 시작(?)하기 때문에

암튼 contentView는 저기서부터 시작입니다.

그치1!! 저기가 contentView의 origin입니다..


근데 scrollView는 저기서부터 시작이 아니란 말이에여



스크롤 인디케이터보면 아니자나 그치

그러므로 scrollView의 contentOffset은...

(0, -100)이 된다..ㅈ즉 bounds의 origin이. (0, -100)


뭔가 제가 헷갈린 이유가..

scrollView와 contentView를 동일시?..해서..헷갈린 느낌?

그리고 저한텐 contentView가 기준이었던 것 같습니다...?


그럼 한번 더 해봅시다.

contentInset을 -100으로 줘봅시다. 


이런 느낌.....??????....

뒤에 파란게 scrollView고 앞에가 contentView.

사실 scrollView가 안보이는건데..보이게 하려고 저렇게 띄워놨어요. 

지금 생각해보니 contentInset top말고 left를 조절하면 됐었는데..


자 암튼 -100이니까 contentView가 scrollView top에서 -100만큼 떨어져있는거..맞죠!?!?




contentView가 -100만큼 올라갔더니 이런상황이 발생.

그럼 scrollView의 contentOffset은 몰까요..?


(0, 100)이 되게됩니다. ㅎ



진ㅉㅏ 이거 틀리면 아주 ㅈ...

뭔가 저번에 네이버 테크콘에서 뭐였지..뭐 마지막으로 만담을 하는데

어떤분이 인터넷에 틀린내용이 넘나많음....!! 이거듣고 뭔가..좀 조심스럽네욥

특히 이런 개념 설명............하는 글이면 더더욱 :ㅇ!!


뭔가 제가 잘못적은 글이..한 사람에게라도 이게 이거구나..! 마치 그게 맞는 내용마냥.. 인지가 된다면

너므 끔찍한데...

그래서 항상 계속 다시 읽으면서 검사하는 편인데

그래도 제가 잘못 알고있으면zzzzzzz발견 못하니까....


그러니 제 글에 잘못된 내용이있다면 

언제든지 댓글로 알려주시면 감사하겠습니다..


악 이 글이 유난히 무서운게

지금 정의만 문서로 보고..모든걸 제 이해도를 기반으로 글을 작성하고있기 때문이에요아악

언제쯤 당당해질 수 있을까요 제 지식이......



자 암튼 사실 이 글이 이렇게 될거라고는 예상을 못했는데....

사실 contentInset정의 좀 보고..캡쳐 좀 하고

바로 contentInsetAdjustmentBehavior < 얘네들 쫙 보려고 한건데

왜 bounds가 -100이 된거지...? 때문에...


자 모 암튼 제가 이해한바로는 그렇구요...

contentInsetAdjustmentBehavior는 다음에 보도록 하겠스비다../.


틀린부분이 있다면 댓글로 알려주세요~_~




반응형

'iOS' 카테고리의 다른 글

iOS 13 달라진 점!!  (4) 2019.09.20
iOS ) adjustedContentInset / contentInsetAdjustmentBehavior  (1) 2019.09.12
iOS ) UITableViewCell / UICollectionViewCell의 View들  (1) 2019.09.04
iOS ) DecodingError  (1) 2019.08.25
iOS) decelerationRate  (0) 2019.08.24