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 | 31 |
Tags
- tableView
- combine
- Clean Code
- Refactoring
- ios
- swift documentation
- Xcode
- Protocol
- UITextView
- 리펙토링
- 애니메이션
- RxCocoa
- map
- HIG
- MVVM
- clean architecture
- uiscrollview
- 리팩토링
- UICollectionView
- 클린 코드
- collectionview
- SWIFT
- ribs
- uitableview
- rxswift
- 리펙터링
- swiftUI
- 스위프트
- Human interface guide
- Observable
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - UI Custom] 8. 커스텀 클래스 - UITabBarController 본문
iOS 실전 (swift)/UI 커스텀(프로그래밍적 접근)
[iOS - UI Custom] 8. 커스텀 클래스 - UITabBarController
jake-kim 2020. 4. 18. 01:39*실습 : TabBarContoller를 custom하여, storyboard에서 클래스 지정으로 가져다 쓰기
1. 스토리보드 준비
2. 새로운 클래스 작성 후, storyboard의 Tab Bar Controller와 연결
- 연결 후 tabBar안보이게 설정(isHidden = true)
1
2
3
4
5
6
7
8
9
10
|
class CSTabBarController: UITabBarController {
let csView = UIView()
let tabItem01 = UIButton(type: .system)
let tabItem02 = UIButton(type: .system)
let tabItem03 = UIButton(type: .system)
override func viewDidLoad() {
self.tabBar.isHidden = true
}
}
|
3. 탭바처럼 보이는 뷰(위에서 csView 변수를 가지고) 구현
1
2
3
4
5
6
7
8
9
|
// CSTabBarController.swift, viewDidLoad()
let width = self.view.frame.width
let height: CGFloat = 50 // 기존 탭바의 디폴트 높이 = 50
let x: CGFloat = 0
let y = self.view.frame.height- height
self.csView.frame = CGRect(x: x, y: y, width: width, height: height)
self.csView.backgroundColor = .brown
self.view.addSubview(csView)
|
4. 탭 바 아이템 구현
1) 버튼 정의
1
2
3
4
5
6
7
8
9
10
11
|
// CSTabBarController.swift, viewDidLoad()
let tabBtnWidth = self.csView.frame.size.width / 3
let tabBtnHeight = self.csView.frame.height
self.tabItem01.frame = CGRect(x: 0, y: 0, width: tabBtnWidth, height: tabBtnHeight)
self.tabItem02.frame = CGRect(x: tabBtnWidth, y: 0, width: tabBtnWidth, height: tabBtnHeight)
self.tabItem03.frame = CGRect(x: tabBtnWidth * 2, y: 0, width: tabBtnWidth, height: tabBtnHeight)
// addTabBarBtn메서드 밑에 정의
self.addTabBarBtn(btn: self.tabItem01, title: "첫 번째 버튼", tag: 0)
self.addTabBarBtn(btn: self.tabItem02, title: "두 번째 버튼", tag: 1)
self.addTabBarBtn(btn: self.tabItem03, title: "세 번째 버튼", tag: 2)
|
2) 버튼 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
// CSTabBarController.swift
func addTabBarBtn(btn: UIButton, title: String, tag: Int) {
btn.setTitle(title, for: .normal)
btn.tag = tag
btn.setTitleColor(.white, for: .normal)
btn.setTitleColor(.yellow, for: .selected)
btn.addTarget(self, action: #selector(onTabBarItemClick(_:)), for: .touchUpInside)
self.csView.addSubview(btn)
}
@objc func onTabBarItemClick(_ sender: UIButton){
// UIButton의 프로퍼티에도 isSelected가 존재
self.tabItem01.isSelected = false
self.tabItem02.isSelected = false
self.tabItem03.isSelected = false
sender.isSelected = true
}
|
3) 첫 번째 화면 눌러지게끔 세팅
1
2
3
4
5
6
|
override func viewDidLoad() {
self.tabBar.isHidden = true
self.onTabBarItemClick(self.tabItem01) // 추가
(..하략..)
|
*소스코드 출처 : 꼼꼼한 재은씨의 스위프트 실전편
'iOS 실전 (swift) > UI 커스텀(프로그래밍적 접근)' 카테고리의 다른 글
[iOS - UI Custom] 10. 사이드 바(side bar, slide and out) (0) | 2020.04.18 |
---|---|
[iOS - UI Custom] 9. 커스텀 클래스(UIControl상속) - UIStepper (0) | 2020.04.18 |
[iOS - UI Custom] 7. 커스텀 클래스 - UIButton (0) | 2020.04.17 |
[iOS - UI Custom] 6. 경고창(UIAlertController) (0) | 2020.04.17 |
[iOS - UI Custom] 5. TabBar Controller (0) | 2020.04.17 |
Comments