본문 바로가기
UIKit

코드베이스로 UIButton 구현하기

by 리버🐦‍🔥 2023. 10. 5.
<UIButton>
  • 버튼을 생성하고 사용자 상호 작용을 처리하는 데 사용
  • 터치 이벤트 또는 제스처 인식을 통해 동작을 수행 (추가적인 이벤트 또는 제스처 함수를 구현해야 함)
[Method & Property]
  • backgroundColor: 배경 색을 지정한다.
  • setTitle(): 버튼에 넣을 텍스트를 지정한다.
  • setTitleColor(): 버튼의 텍스트 색상을 지정한다.
  • addTarget(): 버튼의 이벤트에 대한 액션을 추가한다.
등… 프로퍼티 및 메서드 추가로 공부해보기!
//
//  UIButtonTest.swift
//  UIKit-Study
//
//  Created by Kyungsoo Lee on 2023/09/30.
//

import UIKit

class UIButtonTest: UIViewController {
    // MARK: - UIButton
    private lazy var uiButton: UIButton = {
        let button = UIButton()
        button.setTitle("UIButton", for: .normal)
        button.setTitleColor(.black, for: .normal)
        button.backgroundColor = .systemGray2
        button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
        button.translatesAutoresizingMaskIntoConstraints = false
        
        return button
    }()

    // MARK: - UIBUtton이 눌렸을 때 호출되는 액션 함수
    @objc func buttonTapped() {
        print("버튼이 눌렸습니다.")
    }

    // MARK: - viewDidLoad
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        self.view.backgroundColor = .systemGray
        
        // 뷰 추가(아직 layout 설정 안된 상태)
        self.view.addSubview(uiButton)
        
        setLayout()
    }

    // MARK: - UIButton 제약조건
    private func setUIButtonLayout() {
        let uiButtonConstraint = [
            // 다른 컴포넌트의 상대적인 위치로 제약조건을 설정할 수도 있다.
            uiButton.centerXAnchor.constraint(equalTo: view.centerXAnchor),
            uiButton.centerYAnchor.constraint(equalTo: view.centerYAnchor)
        ]
        NSLayoutConstraint.activate(uiButtonConstraint)
    }

    // MARK: - 전체 제약조건 설정
    // 컴포넌트들의 레이아웃을 설정한다
    private func setLayout() {
        // 프레임 기반의 레이아웃을 비활성화 하여 오토 레이아웃을 기반으로 설정할 수 있도록 한다.
      
        // UIButton 제약조건 설정
        setUIButtonLayout()
    }
}

import SwiftUI

@available(iOS 13.0.0, *)
struct UIButtonTestPreview: PreviewProvider {
    static var previews: some View {
        UIButtonTest().toPreview()
    }
}