이 세계에선 내가 개발자?
[Swift] UILabel 본문
** 아래 내용은 스터디를 위해 정리된 내용입니다 **
UILabel이 뭐지?
유아이레이블, 처음에 Swift를 막 시작했을 때 유아이라벨이라고 해서 조금 혼났(?)었다.
기억하자 유아이레.이.블
스터디를 위한 내용을 적기 전에 기본적인 UILabel에 대한 정의를 알아보고 가는 게 좋을 것 같아서 한번 주저리해보려고한다.
애플 개발자라면 애정(?)할 애플 공식 문서로 가보자
https://developer.apple.com/documentation/uikit/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
그으럼 이건가..? 이것도 아닌 것 같다.
음.. 이것도 스터디 때 물어봐야겠다... 뭘까...
++ 텍스트가 나오지 않는게 맞다!
일단 첫번째 스터디가 이렇게 끝났다.
다음 스터디를 진행한 후 또 다른 궁금점과 해결점이 생긴다면 다시 적어놔야겠다!
'Swift > Swift Based Study' 카테고리의 다른 글
[Swift] UITableView 동적 셀 만들어보기 (0) | 2022.06.15 |
---|---|
[Swift] NSAttributedString과 NSMutableAttributedString 비교 (0) | 2022.06.09 |