-
[iOS]UIButton underline 설정하기/iOS 📱 2022. 4. 22. 17:51반응형
종종 버튼 텍스트에 밑줄을 설정해야할 때가 있죠
빠르게 알아봅시다 ~
UIButton에 underline 설정은 두 가지 방법을 사용할 수 있습니다.
- 인터페이스 빌더에서 설정
- 코드로 설정
1. 인터페이스 빌더에서 설정
1. 인터페이스 빌더 > 어트리뷰트 인스펙터 창에서 Title의 속성을 Attributed로 설정해줍니다
2. underlineStyle을 적용할 Title의 텍스트를 선택한 후 우클릭 > Font > Underline을 설정해줍니다
여기서 궁금증 ! 내용보기의 보기 두 글자만 선택해서 적용이 가능할까 ?
아주 잘 된다 !
자신이 적용할 범위만큼 선택하고 우클릭 > Font > underline을 설정해주면 된다 !
2. 코드로 설정
let title = "예시 버튼" let attributedString = NSMutableAttributedString(string: title) attributedString.addAttribute(.underlineStyle, value: NSUnderlineStyle.single.rawValue, range: NSRange(location: 0, length: title.count)) btnSeeTerms.setAttributedTitle(attributedString, for: .normal)
완전 쉽죠 ?
아래 내용은 개인적인 고찰이 담겨있어서 보실 분만 !!
3. Title의 속성 Plain과 Attributed에 대한 고찰 ?
기존에 저는 Title의 속성이 Plain 이라면 setTitle(_:for:) 메소드를 사용해줘야하고
Title의 속성이 Attribute 이라면 setAttributedTitle(_:for:) 메소드를 사용해줘야한다. 라고 생각을 했었어요
Title의 속성을 Plain 으로 두어도 방법 2의 소스코드를 적용해도 문제가 없었다.
반대로, Title의 속성을 Attribute 으로 두고 아래의 코드처럼 setTitle(_:for:) 메소드를 사용하게 되면 문제가 있었다.
let title = "예시 버튼" underLineButton.setTitle(title, for: .normal)
실행 전에 결과 값을 예상했을 때는 내용보기에서 예시 버튼이 표출되고, 버튼 글자에에 underline이 그려질 것이라고 생각했다.
전혀 바뀌지않았다.
여기서 의문점
1. 속성이 Attributed 라서 setTitle(_:for:) 메소드가 의도대로 동작이 되지않은 것일까 ? Xcode에서 이런걸 안 알려준다고 ..?
2. 아니면 Plain과 Attributed 간의 순서가 있는 것일까 ?
런타임에서 프로퍼티 값이 궁금해서 디버깅을 해보았다.
프로퍼티 currenTitle로 확인해보면 예시 버튼이 들어가있다 !
더욱 혼란스럽다...
String 타입을 저장하는 곳과 NSAttributedString 타입을 따로 저장하는 곳이 있다고 봐야하는 것일까 ?
그리고 Button Title의 속성과 매칭 되는 값을 UIButtonLabel 에 표시한다 ?
자!! 이제 고민은 끝났으니 공식문서를 확인하러 가보자 !!
빨간 네모 박스 안 한 구문을 주목해보자
If you set both a title and an attributed title for the button, the button prefers the use of the attributed title over this one
title , attributed title 두 개 다 설정한다면, UIButton은 attributed title을 선호한다
' > iOS 📱' 카테고리의 다른 글
[iOS] 동적 테이블 뷰 셀(UITableView Dynamic cell height) 만들기 (estimatedRowHeight, autoDimension) (0) 2022.05.01 [iOS] Core Loaction 위치 권한 설정하기 (0) 2022.04.26 [iOS] ViewController의 생명주기 (Life-Cycle) (0) 2022.04.25 [SwiftUI] iPad로도 앱을 만들 수 있을까 ? (0) 2022.02.22 [정보] plist, Cache.db 보는 법 (0) 2022.01.18