관리 메뉴

이 세계에선 내가 개발자?

[Swift] UILabel 본문

Swift/Swift Based Study

[Swift] UILabel

민디고 2022. 5. 28. 14:24

** 아래 내용은 스터디를 위해 정리된 내용입니다 **

UILabel이 뭐지?

유아이레이블, 처음에 Swift를 막 시작했을 때 유아이라벨이라고 해서 조금 혼났(?)었다. 

기억하자 유아이레.이.블

 

스터디를 위한 내용을 적기 전에 기본적인 UILabel에 대한 정의를 알아보고 가는 게 좋을 것 같아서 한번 주저리해보려고한다.

애플 개발자라면 애정(?)할 애플 공식 문서로 가보자

https://developer.apple.com/documentation/uikit/uilabel

 

Apple Developer Documentation

 

developer.apple.com

 

근데 분명 나중에 다시 볼 때 저 링크까지 들어갔다 오기 귀찮을테니까 캡쳐해오자

애플 공식 문서에서 설명하는 UILabel

자 이제 영어를... 한번.. 읽어.. 큼흠..

내가 이래서 영어학원을 다니고 있는데 아직 큰 소득은 없는 것 같다.

 

우리의 영원한 친구 파파고와 함께 다시 살펴보자.

A view that displays one or more lines of informational text.
하나 이상의 정보 텍스트를 표시하는 보기입니다.

 

신기해서 인용문을 써봤다. 정말 간지난다.

근데 무슨 말이지? 그냥 말 그대로 텍스트를 표시하기 위해 사용하는 걸로 이해하자

 

UILabel은 말 그대로 뷰 위에 텍스트를 표시할 때 많이 사용한다. 한 줄이든 여러 줄이든 UILabel로 표현할 수 있다.


UILabel을 난 어떻게 쓸까?

내가 UILabel을 쓸 때는 공식문서가 말해준대로 텍스트를 표시할 때 사용한다.

그럼 UILabel만 쓸 순 없으니 그 안에 담긴 property들을 뭘 쓰고 있었을까 한번 조각 모음하듯이 모아보았다.

  • text
  • attributeText
  • textColor
  • font
  • textAlignment
  • numberOfLines
  • lineBreakMode

난 정말 이 정도면 많이 쓴다고 생각했다. 근데 XCode에서 UILabel을 타고 들어가면 의외로 내가 알지도 못하고, 보지도 못했던 Property들이 많았다.

 

모든 Property들을 소개하기 보다는 내가 봤을 때 신기했던 것 위주로 한 번 조사를 해보려고 한다.

그 전에 text, font, textColor, textAlignment 이런 것들은 많이 사용해봤고 잘 알기 때문에 넘어간다.


shadowColor

와 shadowColor? 이거 뷰에만 있는 거 아니었어? 응 아니었다. 

말 그대로 ShadowColor 섀도우 색상을 지정해줄 수 있다. 한 번 써보자

참고로 나의 모든 코드는 코드 베이스이다. 스토리보드를 사용하지 않는다. + Snapkit

let shadowLabel = UILabel()
shadowLabel.text = "섀도우를 넣어보자"
shadowLabel.shadowColor = .blue

오 뭔가 나오긴 했다.

텍스트 뒤에 shadowColor로 지정한 파란색이 보이는게 보인다. 하지만 지금은 그냥 텍스트 두개가 겹쳐져있는 것처럼 보인다.

이 때 사용하는 게 shadowOffset 이다.


shadowOffset

자 그럼 색은 넣었으니까 좀 더 섀도우 같이 만들어보자

XCode를 뜯어보면 shadowOffset은 CGSize 타입이다. CGSize 타입을 넣어주자.

shadowLabel.shadowOffset = CGSize(width: 1, height: 3)

음? 이게 맞아?

색을 너무 강한걸 넣었다.

아무튼 색은 강하지만 어찌저찌 원하던 섀도우 형태가 만들어졌다.

CGSize에서 width 값을 조정하면 가로로 이동하고, height 값을 조정하면 세로로 이동한다.

양수면 아래, 왼쪽으로 음수면 위, 오른쪽으로 이동한다.

색을 바꾸니까 좀 더 섀도우 스러워졌다.

위 사진은 height 값이 음수라서 위로 올라갔다. 


highlightedTextColor

이게 뭐지? 싶은 Property였다. 이름 그대로 하이라이트 시켜주는 것 같은 느낌적인 느낌

모르겠으면 써보자

let highlightedLabel = UILabel()
highlightedLabel.text = "하이라이트를 넣어보자"
highlightedLabel.highlightedTextColor = .blue

어?

뭐야 아무것도 안나오잖아? 하고 실망했다. 

근데 난 발견했지. 바로 이 존재를..!

isHighlighted

이 친구는 default 값이 No, 즉 false다 이 친구를 true로 해준다면?

highlightedLabel.isHighlighted = true

아까 지정해준 색상이 나타난다. 쨘 색상으로 강조된 레이블이다!


lineBreakStrategy

얜 또 뭐지 했는데 lineBreakMode와 비슷한거라고 한다.

근데 왜 또 얘가 있는거지? 라며 무시했다가 큰 코 다친다. 작은 코도 다친다.

저 친구는 무려 무.려 한글을 지원해준다. 

기본형은 standard인데 이 친구는 한글, 영문 다 지원해주고 hangulWordPriority 요 친구를 쓰면 한글만 지원해준다고 한다.

잠깐 감격스러운 눈물을 훔치고 한번 사용해보자

let lineBreakabel = UILabel()
lineBreakabel.numberOfLines = 3
lineBreakabel.text = "안녕 나는 민디고 라고해, 우리 같이 스터디 하지 않을래? 싫다고 하지만 공부를 해야할거 아니야? 우리 같이 공부해보자고 안녕 나는 지금 정리를 하고 있어 이거 왜 안돼"

뭔데 왜 안썼는데 되는건데?

왜 안썼는데도 잘 되는지 아시는분..? 이건 일단 다른 사람한테 물어보는 걸로 하자

++ 

lineBreakStrategy 이 친구는 기본값이 standard로 기본 설정이 되어있기 때문에 안 썼을 경우에도 잘 먹는다!

그러니 위의 문제는 정확히 잘 나온 결과인 것이다!


스터디 과제

스터디에서 XCode를 이용해서 UILabel을 톺아보면서 하나씩 이야기를 하다보니까 궁금증이 생겼다.

물론 나 혼자만의 궁금증은 아니었기에 선택 과제가 되었다.

아래는 그 과제 내용이다.

더보기
  • Text 기본값이 nil로 되어있는데, 실제로 안넣으면 어떻게 되는지
  • shadowColor 사용해보기 - 양각
  • Attribute 우선순위 조사해보기
  • UILable 저장 영역 조사해보기
  • Highlightedtextcolor 사용해보기
  • IsHighlighted
  • AddTarget 속성
  • IsEnable 언제 쓰는지..?
  • UIlabel 용량은 몇일까
    • UILAbel 여러개랑 이미지 한개 중 뭐가 더 용량이 더 클까

자 그럼 이제 이 중에서 궁금한 것을 하나씩 살펴보자


Text 기본값이 nil로 되어있는데, 실제로 안넣으면 어떻게 되는지

요거 내가 정말 궁금했다. 애초에 Text를 표시해주는 거니까 넣지 않는다라는 건 생각해본 적이 없었기 때문이었다.

그래서 Text를 넣지 않아보았는데

nilTestLabel.text

이렇게 넣는게 맞는건가? 음 근데 아닌 것 같다. 

nilTestLabel.text = nil

그으럼 이건가..? 이것도 아닌 것 같다.

음.. 이것도 스터디 때 물어봐야겠다... 뭘까... 

 

++ 텍스트가 나오지 않는게 맞다! 


일단 첫번째 스터디가 이렇게 끝났다. 

다음 스터디를 진행한 후 또 다른 궁금점과 해결점이 생긴다면 다시 적어놔야겠다!