Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- UICollectionView
- RxCocoa
- 클린 코드
- uitableview
- Refactoring
- 리펙터링
- tableView
- uiscrollview
- 리팩토링
- Protocol
- UITextView
- 리펙토링
- swift documentation
- SWIFT
- 스위프트
- collectionview
- 애니메이션
- rxswift
- Observable
- Clean Code
- combine
- map
- ios
- clean architecture
- HIG
- ribs
- Xcode
- swiftUI
- MVVM
- Human interface guide
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] 커스텀 버튼(custom button) 만들기 본문
목표
- baseButton을 하나 만들고, 공통적으로 baseButton의 속성을 가지면서 각자의 특색있는 커스텀 버튼 생성
BaseButton 생성
- cornerRadius가 4인 Base버튼 클래스 생성
//
// MyBaseButton.swift
// Test
//
// Created by 김종권 on 2020/11/20.
//
import Foundation
import UIKit
class MyBaseButton: UIButton {
override init(frame: CGRect) {
super.init(frame: frame)
setupView()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupView()
}
func setupView() {
layer.cornerRadius = 4
clipsToBounds = true
}
}
- @IBDesignable을 사용할 것이면, BaseButton에 아래 함수 추가
override func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
setupView()
}
BaseButton의 속성을 갖고 있는 Button추가
- 중요한 것은 BaseButton을 상속받는다면 init을 따로 써주지 않아도 되고, setupView()역시 BaseButton의 속성을 그대로 이용하려면, setupView를 override해서 super.setupView()를 호출하면 해결
//
// MyYellowButton.swift
// Test
//
// Created by 김종권 on 2020/11/20.
//
import Foundation
import UIKit
final class MyYellowButton: MyBaseButton {
override var isHighlighted: Bool {
didSet {
backgroundColor = isHighlighted ? .orange : .gray
}
}
override func setupView() {
super.setupView()
setTitleColor(.yellow, for: .normal)
setTitleColor(.gray, for: .disabled)
}
}
* 이처럼 커스텀 버튼에 공통적인 속성을 적용하고 싶을 땐 BaseButton하나를 만들고, 그것을 상속받으며 setupView를 override하는 형태
'iOS 응용 (swift)' 카테고리의 다른 글
[iOS - swift] Firebase/Database연동, Firebase 데이터베이스 (0) | 2020.11.21 |
---|---|
[iOS - swift] Firebase 연동 방법, FirebaseSDK, GoogleService-info.plist (0) | 2020.11.21 |
[iOS - swift] 버튼을 누를 경우, 클립보드에 자동 저장 기능, 복사하기, copy (UIPasteboard.general.string) (0) | 2020.11.20 |
[iOS - swift] NotificationCenter, RxSwift, Foreground진입 시 동작 (0) | 2020.11.16 |
[iOS - swift] KeychainAccess프레임워크로 키체인(keychain)관리하기 (0) | 2020.11.15 |
Comments