참조
1️⃣ UIButton이란?
UIButton 클래스는 사용자의 인터랙션에 반응하여 커스텀 코드를 실행시키는 컨트롤 요소이다.
@MainActor class UIButtion : UIControl
2️⃣ 버튼 사용법
1️⃣ 버튼 생성 3단계
- 버튼을 생성하고 버튼의 유형을 설정한다.
- 컨텐츠에 맞는 사이즈로 타이틀 또는 이미지를 설정한다.
- 버튼을 하나 이상의 액션 메서드와 연결한다.
2️⃣ 사용자 인터랙션에 반응하기
사용자가 버튼을 터치하면 버튼에 연결된 액션 메서드가 호출되어 원하는 작업이 실행됨.
3️⃣ 버튼과 메서드 연결하는 방법
addTarget(_:action:for:)
메서드 사용- 인터페이스 빌더에서 연결(
@IBAction
)
4️⃣ 버튼과 연결되는 메서드 형식
버튼을 탭 했을 때 필요한 정보에 따라 아래 세가지 중 한가지 선택하여 사용
@IBAction func doSomething()
@IBAction func doSomething(sender: UIButton)
@IBAction func doSomething(sender: UIButton, forEvent event: UIEvent)
3️⃣ 버튼 모양 구성하기
1️⃣ 버튼의 상태
- 크게 다섯가지로 표현 가능하다.
- default, highlighted, focused, selected, disabled
- 버튼 상태 조합 가능 ex) [default + highlighted] 등
- 버튼 생성 시 기본 상태 값은 default
- 사용자가 버튼과 인터랙션하면 상태 값이 변화됨.
- 프로그래밍 방식 혹은 인터페이스 빌더를 이용해 버튼의 각 상태에 대한 속성을 별도로 지정 가능
- 별도로 속성을 지정하지 않으면 UIButton 클래스에서 제공하는 기본 동작 사용
- ex) disabled 버튼은 일반적으로 흐리게 표시되며 사용자가 탭해도 hilighted 되지 않음.
4️⃣ 버튼의 주요 프로퍼티
버튼의 프로퍼티 값을 설정하는 방식에는 코드를 이용하는 방법과 스토리보드의 인스펙터를 이용하는 방법이 있다.
enum UIButtonType
: 버튼의 유형- 버튼의 유형에 따라 버튼의 기본적인 외형과 동작이 달라짐.
- 처음 버튼을 생성할 때
init(type:)
메서드를 이용하거나, 인터페이스 빌더의 “Attribute Inspecter”에서 버튼 유형을 지정할 수 있음. - 한번 생성된 버튼의 유형은 이후 변경 불가능
- 가장 많이 사용하는 유형은
Custom
과System
이지만 필요에 따라 다른 유형(Detail Disclosure, Info Light, Info Dark, Add Content) 사용 가능
var titleLabel: UILabel?
: 버튼 타이틀 레이블var imageView: UIImageView?
: 버튼의 이미지뷰var tintColor: UIColor!
: 버튼 타이틀과 이미지의 틴트 컬러
5️⃣ 버튼의 주요 메서드
// 특정 상태의 버튼 문자열 설정
func setTitle(String?, for: UIControlState)
// 특정 상태의 버튼 문자열 반환
func title(for: UIControlState) -> String?
// 특정 상태의 버튼 이미지 설정
func setImage(UIImage?, for: UIControlState)
// 특정 상태의 버튼 이미지 반환
func image(for: UIControlState) -> UIImage?
// 특정 상태의 백그라운드 이미지 설정
func setBackgroundImage(UIImage?, for: UIControlState)
// 특정 상태의 백그라운드 이미지 반환
func backgroundImage(for: UIControlState) -> UIImage?
// 특정 상태의 문자열 색상 설정
func setTitleColor(UIColor?, for: UIControlState)
// 특정 상태의 attributed 문자열 설정
func setAttributedTitle(NSAttributedString?, for: UIControlState)