안녕하세요 공공돌🧸 입니다.
UIButton에 대해 공식 문서를 번역해보면서 알아보겠습니다.
1. UIButton
Overview( 개요 )
버튼을 누르거나 포커스가 있는 버튼을 선택하면 버튼이 연결된 모든 작업을 수행합니다.
텍스트 레이블, 이미지 또는 둘 다를 사용하여 버튼의 목적을 전달합니다.
버튼의 모양은 구성 가능하므로 앱 디자인에 맞게 버튼에 색조를 지정하거나 제목 형식을 지정할 수 있습니다.
프로그래밍 방식으로 또는 인터페이스 빌더를 사용하여 인터페이스에 버튼을 추가할 수 있습니다.
인터페이스에 버튼을 추가할 때 다음 단계를 수행하세요.
- 생성 시 버튼 유형을 설정합니다.
- 제목 문자열이나 이미지를 제공하세요. 콘텐츠에 맞게 버튼 크기를 조정하세요.
- 하나 이상의 작업 메서드를 버튼에 연결합니다.
- 인터페이스에서 버튼의 크기와 위치를 제어하는 자동 레이아웃 규칙을 설정하세요.
- 접근성 정보와 현지화된 문자열을 제공하세요.
Respond to button taps( 버튼 탭에 대한 응답 )
버튼은 사용자가 버튼을 탭할 때 앱에 알리기 위해 target-action 디자인 패턴을 사용합니다.
직접 터치 이벤트를 처리하는 대신, 버튼에 action 메서드를 할당하고 어떤 이벤트가 해당 메서드를 호출하는지 지정합니다.
실행 중에 버튼은 모든 수신된 터치 이벤트를 처리하고 응답으로 메서드를 호출합니다.
버튼을 action 메서드에 연결하는 방법으로는 addTarget(_:action:for:) 메서드를 사용하거나 Interface Builder에서 연결(IBAction) 을 생성할 수 있습니다.
action 메서드의 시그니처는 다음 코드에 나와 있는 세 가지 형태 중 하나를 취합니다.
버튼과 연결되는 메서드 형식
@IBAction func doSomething()
@IBAction func doSomething(sender: UIButton)
@IBAction func doSomething(sender: UIButton, forEvent event: UIEvent)
Button States ( 버튼의 상태 )
버튼의 상태는 다섯가지로 표현합니다.
var normal: UIBarButtonItemStateAppearance
버튼이 정상 상태일 때 버튼에 적용할 모양 데이터입니다.
var disabled: UIBarButtonItemStateAppearance
비활성화된 상태일 때 버튼에 적용할 모양 데이터입니다.
var highlighted: UIBarButtonItemStateAppearance
강조 표시된 상태에 있을 때 버튼에 적용할 모양 데이터입니다.
var focused: UIBarButtonItemStateAppearance
포커스가 있을 때 버튼에 적용할 모양 데이터입니다.
- 버튼의 상태는 조합된 상태일 수 있습니다.
- 예) [default + highlighted], [selected + disabled] 등등
- 버튼 생성 시 기본 상태 값은 default입니다.
- 사용자가 버튼과 상호작용을 하면 상태 값이 변하게 됩니다.
- 프로그래밍 방식 혹은 인터페이스 빌더를 이용해 버튼의 각 상태에 대한 속성을 별도로 지정할 수 있습니다.
- 별도로 속성을 지정하지 않으면 UIButton 클래스에서 제공하는 기본 동작을 사용하게 됩니다.
- [예] disabled 버튼은 일반적으로 흐리게 표시되며 사용자가 탭 해도 highlighted 되지 않습니다.
버튼 주요 프로퍼티
버튼의 프로퍼티 값을 설정하는 방식에는 코드를 이용하는 방법과 스토리보드의 인스펙터를 이용한 방법이 있습니다.
- enum UIButtonType: 버튼의 유형
- 버튼의 유형에 따라 버튼의 기본적인 외형과 동작이 달라집니다.
- 처음 버튼을 생성할 때 init(type:) 메서드를 이용하거나, 인터페이스빌더의 "Attribute Inspector"에서 버튼 유형을 지정할 수 있습니다.
- 한번 생성된 버튼의 유형은 이후 변경 할 수 없습니다.
- 가장 많이 사용하는 유형은 Custom과 System이지만 필요에 따라 다른 유형(Detail Disclosure, Info Light, Info Dark, Add Contact)를 사용할 수 있습니다.
- var titleLabel: UILabel?: 버튼 타이틀 레이블
- var imageView: UIImageView?: 버튼의 이미지 뷰
- var tintColor: UIColor!: 버튼 타이틀과 이미지의 틴트 컬러
버튼 주요 메서드
// 특정 상태의 버튼의 문자열 설정
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)
참조 링크
UIButton | Apple Developer Documentation
A control that executes your custom code in response to user interactions.
developer.apple.com
공부하는 공돌이, 공공돌입니다🐻
@sheep1sik
'iOS > UIKit' 카테고리의 다른 글
[ UIKit ] UISlider (20) | 2024.02.03 |
---|---|
[UIKit ] UILabel (17) | 2024.01.27 |
[ UIKit ] UIKit이란? (14) | 2024.01.26 |