iOS/기본편 | 실전편 -꼼꼼한재은씨
탭바 컨트롤러(code)
글자줍기
2022. 2. 2. 09:33
반응형
?? 사용하면서 발생한문제... 맨첫화면이 아닌 눌러서 탭들이 있는화면으로 이동하는 법을 모르겠음..첫화면이 무조건 탭화면으로 나옴
달력, 파일, 사진의 각각의 뷰컨트롤러 클래스를 생성한다. 뷰컨1 , 뷰컨2 ,뷰컨3
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
//1.타이틀레이블 생성
let title = UILabel(frame: CGRect(x: 0, y: 100, width: 100, height: 30))
//2.타이틀 레이블속성설정
title.text = "첫번째탭"
title.textColor = .red
title.textAlignment = .center
title.font = UIFont.boldSystemFont(ofSize: 14)
//콘텐츠 내용에 맞게 레이블 크기 변경
title.sizeToFit()
//x축의 중앙에 오도록 설정
title.center.x = self.view.frame.width / 2
//수퍼뷰에 추가
self.view.addSubview(title)
}
// 애니메이션설정
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
let tabBar = self.tabBarController?.tabBar
// tabBar?.isHidden = (tabBar?.isHidden == true) ? false : true
UIView.animate(withDuration: TimeInterval(0.15),animations:{
//알파값이 0이면 1로, 1이면 0으로 바꿔준다.
//호출될때마다 점점 투명해졌다가 점점 진해질 것이다.
// (참거짓조건)? 참일때의값 : 거짓일때의 값
tabBar?.alpha = (tabBar?.alpha == 0 ? 1 : 0)
})
}
}
NewSceceDelegate.swift 파일을 생성하고, info에 값을 수정해 등록해준다.
NewSceceDelegate.swift
더보기
더보기
SceneDelegate 구현조건 4가지
1. UIResponder 클래스를 상속받아야한다.
2. UIWindowSceneDelegate 프로토콜을 구현해야한다.
3. UIWindow 타입의 멤버변수 window가 정의되어 있어야한다.
4. Info.pist파일의 Delegate Class Name항목에 등록되어 있어야한다.
직접생성한 탭바 컨트롤러는 배경색이 없으므로, 지정해주어야한다.
import UIKit
class NewSceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession,
options connectionOptions: UIScene.ConnectionOptions){
// 1.탭바 컨트롤러를 생성하고, 배경을 흰색으로 채운다.
let tbC = UITabBarController()
tbC.view.backgroundColor = .white
// 완성된 tbC를 루트 뷰 컨트롤러로 등록한다.
self.window?.rootViewController = tbC
//3.탭바 아이템에 연결될 뷰 컨트롤러 객체를 생성한다.
let view01 = ViewController()
let view02 = SecondViewController()
let view03 = ThirdViewController()
//4.생성된 뷰 컨트롤러 객체들을 탭바 컨트롤러에 등록한다.
tbC.setViewControllers([view01,view02,view03], animated: false)
//5.개별 탭 바 아이템 속성
view01.tabBarItem = UITabBarItem(title: "달력", image: UIImage(named: "calendar"), selectedImage: nil)
view02.tabBarItem = UITabBarItem(title: "파일", image: UIImage(named: "file-tree"), selectedImage: nil)
view03.tabBarItem = UITabBarItem(title: "사진", image: UIImage(named: "photo"), selectedImage: nil)
}
}
반응형