본문 바로가기
공부/[iOS&Swift]

[iOS] Button, Label, Slider에 대하여

by 인생은아름다워 2022. 1. 20.

🔘 UIButton

  • UIContol클래스를 상속받는 사용자와의 상호작용을 통해 정해놓은 코드를 실행하는 control이다.

(실제로 공식문서에는 A control that~~으로 정의함)

  • UIButton을 인터페이스에 추가했을 때 다음과 같은 순서로 작업하면 된다.
  1. 버튼을 생성하고 버튼의 타입을 설정한다.
  2. 버튼의 title로 문자열 또는 이미지를 지정하고, 사이즈를 적절하게 조절한다.
  3. action 메서드를 지정한다.(한 개 또는 그 이상)
  4. 레이아웃을 잡는다.
  5. 접근성 정보(accessibility)와 localized string을 제공한다.(이부분이 이해되지 않음)
  • Respond to Button Taps

UIButton은 터치될 때 애플리케이션에 그 사실을 알리고, 직접 touch이벤트를 다루는것이 아니라, 연결된 액션메서드를 지정해놓고, 이벤트 발생시 액션메서드 발생을 트리거 할 수 있다.

addTarget(_: action: for: )메서드를 사용하거나, @IBAction을 통해 인터페이스빌드에서 연결할 수 있다.

당연히 보통의 경우 @IBAction을 많이 사용할 것 같다.

다음 중 한 방식을 선택하여 필요에따라 사용하면 된다.

@IBAction func doSomething()
@IBAction func doSomething(sender: UIButton)
@IBAction func doSomething(sender: UIButton, forEvent event: UIEvent)
  • Configure a Button’s Appearance

처음 생성시 init(type: )생성자를 통해서 또는, 스토리보드를 통해 지정해줄 수 있다. 다만, 한번 생성된 버튼에 대해 type을 변경할 수는 없다.

가장 흔히 사용되는 버튼 타입은 Custom과 System 타입니다.

  • Button States

버튼은 다음의 다섯가지 상태를 가질 수 있다. : default, highlighted, focused, selected, disabled

사용자와의 interactions을 통해 버튼의 상태를 변화시킬 수 있으며, 상태는 조합된 상태를 가질 수 있다.

(예시 : dafault + highlighted, selected + disabled)

기본으로 default state를 가지며, 프로그래밍 방식 또는 인터페이스 빌더를 이용해서 각 상태에 대한 속성을 지정할 수 있다.

각 상태의 속성을 따로 지정하지 않으면, UIButton class에서 제공하는 기본 동작을 가지게 된다.

  • Button의 주요 프로퍼티와 메서드 (이 내용은 실제로 definition을 보는것이 좋을 듯!)
enum UIButtonType
var titleLabel:UILabel?
var imageView: UIImageView?
var tintColor: UIColor!
//...

func setTitle(String?, for: UIControlState)
//특정 상태의 타이틀 변경
func title(for: UIControlState) -> String?
//특정 상태의 타이틀 반환
//... 직접 보자...

🔖 UILabel

  • UIView 클래스를 상속받는 한 줄 또는 그 이상의 줄을 나타낼 수 있는 View

주로 UIButton과 같은 Control의 목적을 설명해주기 위해 많이 사용한다고 한다.

  • 다음과 같은 순서로 Label을 추가한다.
  1. 문자열(String)또는 컨텐츠를 대표하는 특성문자열(Attributed string)을 제공한다.
  2. non-attributed string을 사용한다면, appearance를 지정한다.
  3. 레이아웃을 잡는다.
  4. 접근성 정보(accessibility)와 localized string을 제공한다.
  • Label의 주요 프로퍼티
var text: String?
var attributedText: NSAttributedString?
// text나 attributedText에 값을 할당하면, 서로의 것에 같은 값을 할당하게 된다.
// text는 문자열이 모드 동일한 폰트, 색상 등의 속성을 가지고
// atributedText는 문자열 중 특정 부분의 속성을 변경할 수 있다.

var textColor: UIColor!
var font: UIFont!
var TextAlignment: NSTextAlignment //left, right, center, justified, natural

var numberOfLines: Int  // 문자를 나타내는 최대 라인 수
// 필요한 만큼의 행을 모두 보여주려면 0
// 최대 라인수를 넘는다면 lineBreakMode 속성에 맞게끔 잘라서 표현
// adjustsFontSizeToFitWIdth 프로퍼티를 사용하면 폰트 사이즈를 레이블의 넓이에 따라 자동으로 조절

var baselineAdjustment: UIBaselineAdjustment // 문자열이 Autoshringk되었을 때의 수직정렬
// Align Baseline: 문자가 작아졌을 때 기존 문자열의 기준선에 맞춤
// Align Center: 문자가 작아졌을 때 작아진 문자의 중앙선에 맞춤
// None: 문자가 작아졌을 때 기존 문자열의 위쪽 선에 맞춤

var lineBreakMode: NSLineBreakMode
// 레이블의 경계선을 벗어나는 문자열에 대응하는 방식
// Character wrap: 여러 줄 레이블에 주로 적용, 글자 단위로 줄 바꿈을 결정
// Word Wrap: 여러 줄 레이블에 주로 적용, 단어 단위로 줄 바꿈을 결정
// Truncate head: 한 줄 레이블에 주로 적용, 앞쪽 텍스트를 자르고 ...으로 표시
// Truncate middle: 한 줄 레이블에 주로 적용, 중간 텍스트를 자르고 ...으로 표시 
// Truncate tail : 한 줄 레이블에 주로 적용, 뒷쪽 텍스트를 자르고 ...으로 표시 (기본설정!)

📊 UISlider

  • 연속 범위의 값들 중 한 값을 선택할때 사용하는 Control

슬라이더의 thumb를 이동하면, 그에따라 업데이트 된 값을 슬라이더에 연결된 Action메서드에 전달한다.

기본적으로 thumb를 이동할 때 마다 action 메서드를 호출하며 값을 전달하지만, isContinuous 프로퍼티를 통해, 손을 뗄 때의 final value만 전달하고, 호출하도록 설정할 수 있다.

  • 다음과 같은 순서로 Slider를 추가한다.
  1. 슬라이더의 값의 범위를 지정한다.
  2. 선택적으로, 모양을 꾸민다.
  3. 하나 또는 그 이상의 액션 메서드를 연결한다.
  4. 레이아웃을 잡는다.
  • UIButton과 유사하게 다음과 같은 방식으로 액션메서드와 연결할 수 있다.

addTarget(_: action: for: )메서드를 사용하거나, @IBAction을 통해

  • 슬라이더와 연결하는 메서드의 형식
@IBAction func doSomething()
@IBAction func doSomething(sender: UISlider)
@IBAction func doSomething(sender: UISlider, forEvent event: UIEvent)
  • UISlider의 주요 프로퍼티와 메서드
var minimumValue: Float
var maximumValue: Float
var isContinuous: Bool
var minimumValueImage: UIImage?
var maximumValueImage: UIImage?
var thumbTintCOlor: UIColor?
var minimumTrackTintColor: UIColor?
var maximumTrackTintColor: UIColor?

func setMinimumTrackImage(UIImage?, for: UIControlState)
func maximumTrackImage(for: UIControlState) -> UIImage?

// 메서드를 보니 ControlState가 슬라이더에도 있네..? 사용할때 참고해야겠다!

🍎  참고 문서

UIButton

UILabel

UISlider

댓글