꼭 학습해야할 개념 2가지
* 초기화 메소드의 델리게이션
* 프로퍼티 옵저버
-- 이 두가지 개념은 개념이 길어서 포스팅 다시하기 --
//
// CSButton.swift
// Chapter03-CSButton
//
// Created by Hamlit Jason on 2021/03/18.
//
import UIKit
public enum CSButtonType {
case rect
case circle
}
class CSButton: UIButton {
// required가 붙은 메소드는 필수 구현 메소드이다.
required init(coder aDecoder: NSCoder) { // init구문은 스토리보드 방식으로 객체를 생성할 때 호출되는 초기화 메소드
super.init(coder: aDecoder)!
// 스토리보드 방식으로 버튼을 정의했을 때 정의된다.
self.backgroundColor = .green // 배경을 녹색으로
self.layer.borderWidth = 2 // 테두리는 조금 두껍게
self.layer.borderColor = UIColor.black.cgColor // 테두리는 검은색
self.setTitle("버튼", for: .normal) // 기본 문구 설정
}
override init(frame: CGRect){
// 프로그래밍 방식으로 버튼 정의한 것 사용
super.init(frame: frame)
self.backgroundColor = .gray // 배경을 녹색으로
self.layer.borderWidth = 2 // 테두리는 조금 두껍게
self.layer.borderColor = UIColor.black.cgColor // 테두리는 검은색
self.setTitle("코드로 생성된 버튼", for: .normal) // 기본 문구 설정
}
init() {
super.init(frame: CGRect.zero)
}
convenience init(type: CSButtonType) {
self.init()
switch type {
case .rect :
self.backgroundColor = .black // 배경을 녹색으로
self.layer.borderWidth = 2 // 테두리는 조금 두껍게
self.layer.borderColor = UIColor.black.cgColor // 테두리는 검은색
self.layer.cornerRadius = 0 // 모서리는 전혀 둥글지 않게
self.setTitleColor(.white, for: .normal)
self.setTitle("Rect 버튼", for: .normal) // 기본 문구 설정
case .circle :
self.backgroundColor = .red // 배경을 녹색으로
self.layer.borderWidth = 2 // 테두리는 조금 두껍게
self.layer.borderColor = UIColor.blue.cgColor // 테두리는 검은색
self.layer.cornerRadius = 50
self.setTitle("Circle 버튼", for: .normal) // 기본 문구 설정
}
self.addTarget(self,action: #selector(counting(_:)),for: .touchUpInside)
}
var style : CSButtonType = .rect{
didSet{
switch style {
case .rect :
self.backgroundColor = .black // 배경을 녹색으로
self.layer.borderWidth = 2 // 테두리는 조금 두껍게
self.layer.borderColor = UIColor.black.cgColor // 테두리는 검은색
self.layer.cornerRadius = 0 // 모서리는 전혀 둥글지 않게
self.setTitleColor(.white, for: .normal)
self.setTitle("Rect 버튼", for: .normal) // 기본 문구 설정
case .circle :
self.backgroundColor = .red // 배경을 녹색으로
self.layer.borderWidth = 2 // 테두리는 조금 두껍게
self.layer.borderColor = UIColor.blue.cgColor // 테두리는 검은색
self.layer.cornerRadius = 50
self.setTitle("Circle 버튼", for: .normal) // 기본 문구 설정
}
}
}
@objc func counting(_ sender : UIButton) {
sender.tag = sender.tag + 1 // 태그속성 사용함
sender.setTitle("\(sender.tag) 번째 클릭", for: .normal)
}
}
//
// ViewController.swift
// Chapter03-CSButton
//
// Created by Hamlit Jason on 2021/03/18.
//
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let frame = CGRect(x: 30, y: 50, width: 150, height: 30)
let csBtn = CSButton(frame: frame)
self.view.addSubview(csBtn)
let rectBtn = CSButton(type: .rect)
rectBtn.frame = CGRect(x: 30, y: 200, width: 150, height: 30)
self.view.addSubview(rectBtn)
let circleBtn = CSButton(type: .circle)
circleBtn.frame = CGRect(x: 200, y: 200, width: 150, height: 30)
self.view.addSubview(circleBtn)
}
}
코드를 보면서 그냥 보자 이건 쉽다
'Archive > 꼼꼼한 재은씨 시리즈' 카테고리의 다른 글
커스텀 클래스(3) - 커스텀 스테퍼 (0) | 2021.03.19 |
---|---|
커스텀 클래스(2) - 커스텀 탭 바 컨트롤러 (0) | 2021.03.19 |
알림창 커스터마이징 (0) | 2021.03.19 |
네비게이션 바 커스터마이징 (0) | 2021.03.19 |
탭바 커스터마이징 (0) | 2021.03.14 |