티스토리 뷰

반응형

안녕하세요! 

이 바로 전글에서 

iOS ) 텍스트뷰 테두리 둥글게/버튼 둥글게

글을 썼었는데,
버튼을 둥글게 어떻게하지? 하고 찾아보셨으면

myTextView.clipsToBounds = true


위 코드를 보셨을 거에요.

그리고 



Button.layer.masksToBounds = false


뭐 이런코드도 보셨을 겁니다.


근데 이걸 안해도 아무 문제없어요. 지금 상태에서는요.

위 코드를 안적어도 텍스트뷰는 둥글게 되고 버튼도 잘 됩니다.

근데!!!왜 다들 



여기도


여기도



여기도...


도대체


masksToBounds가 뭐고 clipsToBounds가 뭘까요?

먼저 결론만 말씀드리면 이 두개의 프로퍼티는 기능이 똑같다고 볼 수 있습니다.


아니 이게 무슨기능인데요??

라고 물어보시면 예제를 통해 보여드릴게요. 한번에 아실 수 있을 겁니다.

자 바로 이전 글에 썼었던

텍스트뷰를 재활용해보겠습니다.

ㅎㅎ




왼쪽은 cornerRadius를 70, 오른쪽은 120을 준 상황입니다. 

이거 저번시간에 했는데 왜 또 보여주냐구요?

저기 텍스트뷰 안에 있는 글 보이시나요?

원래 이렇게 안녕하세요:)라는 글이 있었답니다..하지만 테두리를 둥글게 둥글게 만들다보니 

저 글씨가 안보이게 된거죠....!

자 지금은 저게 보여도 안보여도 상관없지만

때에 따라서는, 아니면 텍스트뷰가 아니라 버튼, 라벨이었다면,

프로그래머가 그 안에 적은 텍스트가 짤리면 안되는 일이 생길 수 있겠죠?

그럴때!!!!!!!!!!!

바로 오늘의 주제인

⭐️ masksToBounds 또는 clipsToBounds을 사용하는 것입니다. ⭐️


자, 먼저 두개는 똑같은 기능을 한다고 그랬죠? 

하지만 불러오는 곳이 다릅니다.


myTextView.layer.masksToBounds

myTextView.clipsToBounds


masksToBounds는 layer의 프로퍼티고 clipsToBounds는 그냥 텍스트뷰의 프로퍼티죠? 

(이때, 텍스트뷰 뿐만이 아니라 버튼, 라벨에서도 불러올 수 있는 프로퍼티입니다.)


먼저 masksToBounds는 


bool변수 입니다.

true와 false일때, 어떻게 다를까요?


masksToBounds를 true로 주게되면, 위의 안녕하세요:)가 짤린것 처럼 

텍스트뷰 테두리가 기준이됩니다. 

텍스트뷰라는 큰 뷰가있고 그 안에 안녕하세요:)라는 내용이 있는 것이죠? 

이 큰 뷰를 기준으로 바깥에 있는 것은 짤리게 됩니다.  

만약 false를 주면 어떻게 될까요? 

네 맞습니다. 짤리지않고, 내용(안녕하세요:)이 다 보이게 된답니다. 






그리고 다음 clipsToBounds.


clipsToBounds역시 bool변수네요.

그리고 친절하게 주석으로 설명까지 되어있네요!!

해석을 해보면,


"true일때 내용들과 서브뷰들은 뷰의 테두리를 기준으로 잘리게 됩니다. 

기본값은  false입니다. "


역시 masksToBounds와 같이 false를 주면 짤리지 않게 되는 것 같네요.









두개는 기능이 똑같다고 했으니 하나씩 해보고 진짜 똑같은지 한번 보죠.


viewDidLoad()에 


myTextView.layer.masksToBounds = false

위 코드를 넣어주세요. 


그러고 실행시켜주면..!!

짠!!! 안녕하세요:)가 살아났어요!!


그리고 위 코드를 주석처리하고 이번엔


myTextView.clipsToBounds = false

를 해봅시다.

그리고 실행시키면!!


역시나 이렇게 된답니다 ㅎㅎㅎ

이 두개의 차이점이 뭔지 궁금해서 한참을 찾아봤네요ㅎㅎ..

도움이 되었으면 좋겠어요 🙏

반응형