티스토리 뷰
728x90
반응형
UILabel 부분 글자 크기/폰트/색상/밑줄 설정하기
하단의 " QR 체크인 쉐이크 기능 끄기 " 버튼의 부분 글자에 밑줄을 만들어보자.
let text = "QR 체크인 쉐이크 기능 끄기"
self.switchShakeButton.setTitle(text, for: .normal)
let attributeString = NSMutableAttributedString(string: text)
// ✅ 굵기 1의 언더라인과 함께 처음부터 끝까지 밑줄 설정.
attributeString.addAttribute(.underlineStyle , value: 1, range: NSRange.init(location: 0, length: text.count))
self.switchShakeButton.titleLabel?.attributedText = attributeString
UILabel 에서도 당연히 가능하다. 왜냐하면 UILabel 에서 가능하기 때문에 UIButton 의 UILabel 에서 적용할 수 있는 것이기 때문이다.
그렇다면 addAttribute(_:value:range:) 메서드를 뜯어보자.
🌈 addAttribute(_:value:range:)
지정된 범위의 문자에 주어진 이름과 값을 가진 속성을 추가한다.
Declartion
func addAttribute(_ name: NSAttributedString.Key,
value: Any,
range: NSRange)
Parameters
- name
속성 이름을 지정하는 문자열.
NSAttributedString.Key 키값을 자료형으로 요구하기 때문에 여기 있는 다양한 키들을 사용해서 우리는 속성을 줄 수 있다.
- value
이름과 관련된 속성 값이다. 예로들어 색이라면 UIColor, 밑줄이라면 Int 값의 굵기 등이 있다.
- aRange
지정된 속성/값 쌍이 적용되는 문자 범위이다.
Discussion
문자 범위에 원하는 이름/값 쌍을 할당할 수 있습니다. 이름이나 값이 nil이면 invalidArgumentException
을 발생시키고 aRange의 일부가 수신자의 문자 끝을 넘어서 있으면 rangeException
을 발생시킵니다.
🌈 사용해보기
간단하게 몇개를 사용해보겠다. 더 많은 키값들이 존재하니까 NSAttributedString.Key 필요에 따라 개발자문서를 참고해보자.
- 크기와 폰트
let font = UIFont(name: "Helvetica", size: 12)
// ✅ UIFont 개체를 지정하지 않으면 12-point 의 Helvetica 폰트가 디폴트값이다.
attributeString.addAttribute(.font , value: font, range: NSRange.init(location: 0, length: 1))
- 색상
// ✅ value 로 UIColor 인스턴스를 가진다. 지정하지 않으면 검은색으로 랜더링된다.
attributeString.addAttribute(.foregroundColor , value: UIColor.black, range: NSRange.init(location: 0, length: 1))
- 밑줄
// ✅ value 로 정수를 포함하는 NSNumber 개체를 가진다.
attributeString.addAttribute(.underlineStyle , value: 1, range: NSRange.init(location: 0, length: 1))
// ✅ 그리고 NSUnderlineStyle 의 상수 중 하나에 해당한다. 이 속성의 기본값은 styleNone 이다.
attributeString.addAttribute(.underlineStyle , value: NSUnderlineStyle.single , range: NSRange.init(location: 0, length: text.count))
// ✅ 위의 두가지 모두 가능하다.
당연히 여러개의 속성과 값을 동시에 줄 수 있는 메서드도 존재한다.
참고 :
728x90
반응형
'iOS' 카테고리의 다른 글
iOS) UIImage 를 Data 로 변환해서 UserDefaults 에 저장하는 것은 부적합하다? (0) | 2021.09.06 |
---|---|
iOS) UserDefaults 에 image 저장하기 (0) | 2021.09.06 |
iOS) 원하는 모서리만 cornerRadius 사용하기 (0) | 2021.08.31 |
iOS) Notification.Name extention 해서 사용하기 (0) | 2021.08.23 |
iOS) UIView 에 transition animation 적용해보기 (0) | 2021.08.20 |
댓글
TAG
- SwiftUI
- APNS
- Firebase
- containerBackground
- RxCocoa
- 2022 KAKAO TECH INTERNSHIP
- YPImagePicker
- rxswift
- 서버통신
- configurable widget
- Widget
- urlsession
- WidgetKit
- CloneCoding
- Notification
- Objective-C
- Swift
- IOS
- projectsetting
- github
- MVVM
- OpenSourceLibrary
- async/await
- WWDC22
- MOYA
- watchOS
- Algorithm
- WWDC
- Protocol
- UserDefaults
최근에 올라온 글
최근에 달린 댓글
글 보관함
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
링크
- Total
- Today
- Yesterday