import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Navigation Controller 생성
let navigationController = UINavigationController(rootViewController: self)
// 현재 ViewController를 rootViewController로 설정
// Navigation Controller를 화면에 표시
UIApplication.shared.windows.first?.rootViewController = navigationController
UIApplication.shared.windows.first?.makeKeyAndVisible()
}
}
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// UIWindow 인스턴스 생성
window = UIWindow(frame: UIScreen.main.bounds)
// Root View Controller 생성
let viewController = ViewController()
// UINavigationController 생성 및 rootViewController로 설정
let navigationController = UINavigationController(rootViewController: viewController)
// UIWindow에 UINavigationController 설정
window?.rootViewController = navigationController
// UIWindow를 화면에 표시
window?.makeKeyAndVisible()
return true
}
}
초기 화면을 구성할 때 UIApplicationDelegate에서 UINavigationController와 rootViewController를 설정하는 방법도 사용가능
iOS 앱의 진입점인 AppDelegate 클래스는 앱의 생명 주기를 관리하고, 앱이 시작될 때 초기 환경 설정을 담당합니다. 따라서 UINavigationController을 생성하고 rootViewController로 ViewController를 설정하는 작업은 AppDelegate에서 수행할 수 있습니다. 이렇게 하면 앱이 시작될 때 처음 표시되는 화면을 명확히 설정할 수 있습니다
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Navigation Controller 생성
let navigationController = UINavigationController(rootViewController: self)
// UINavigationBar 배경색상 설정
navigationController.navigationBar.barTintColor = UIColor.blue
// UINavigationBar 제목 설정
navigationController.navigationBar.topItem?.title = "Main Screen"
}
}
// 오른쪽에 버튼 추가
let rightButton = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addButtonTapped))
navigationController.navigationBar.topItem?.rightBarButtonItem = rightButton
@objc func addButtonTapped() {
// 오른쪽 버튼이 눌렸을 때의 동작 처리
print("Add button tapped!")
}
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Navigation Controller 생성
let navigationController = UINavigationController(rootViewController: self)
// 네비게이션 바 배경색 설정
navigationController.navigationBar.barTintColor = UIColor.blue
// 네비게이션 바 제목 설정
self.navigationItem.title = "Main Screen"
// 왼쪽에 버튼 추가 (예: 뒤로가기 버튼)
let leftButton = UIBarButtonItem(barButtonSystemItem: .rewind, target: self, action: #selector(leftButtonTapped))
self.navigationItem.leftBarButtonItem = leftButton
// 오른쪽에 버튼 추가
let rightButton = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(rightButtonTapped))
self.navigationItem.rightBarButtonItem = rightButton
}
// 왼쪽 버튼 탭 시 동작
@objc func leftButtonTapped() {
print("Left button tapped!")
}
// 오른쪽 버튼 탭 시 동작
@objc func rightButtonTapped() {
print("Right button tapped!")
}
}
navigationController.navigationBar.barTintColor = UIColor.blue
self.navigationItem.title = "Main Screen"
let rightButton = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(rightButtonTapped))
self.navigationItem.rightBarButtonItem = rightButton
let leftButton = UIBarButtonItem(barButtonSystemItem: .rewind, target: self, action: #selector(leftButtonTapped))
self.navigationItem.leftBarButtonItem = leftButton
if let customImage = UIImage(named: "customImage") {
let customButton = UIBarButtonItem(image: customImage, style: .plain, target: self, action: #selector(customButtonTapped))
self.navigationItem.rightBarButtonItem = customButton
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.setNavigationBarHidden(true, animated: animated)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationController?.setNavigationBarHidden(false, animated: animated)
}
let titleLabel = UILabel()
titleLabel.text = "Custom Title"
titleLabel.textColor = UIColor.white
titleLabel.sizeToFit()
navigationItem.titleView = titleLabel
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// 네비게이션 바 전반적인 스타일 설정
UINavigationBar.appearance().barTintColor = UIColor.blue
UINavigationBar.appearance().titleTextAttributes = [
NSAttributedString.Key.foregroundColor: UIColor.white,
NSAttributedString.Key.font: UIFont.boldSystemFont(ofSize: 18)
]
UINavigationBar.appearance().tintColor = UIColor.white
return true
}
}
import UIKit
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 특정 화면에서 네비게이션 바 스타일 변경
navigationController?.navigationBar.barTintColor = UIColor.red
navigationController?.navigationBar.titleTextAttributes = [
NSAttributedString.Key.foregroundColor: UIColor.white,
NSAttributedString.Key.font: UIFont.boldSystemFont(ofSize: 20)
]
}
}
import UIKit
func customizeNavigationBarAppearance() {
// 네비게이션 바 배경색 설정
UINavigationBar.appearance().barTintColor = UIColor.blue
// 네비게이션 바 버튼 색상 설정
UINavigationBar.appearance().tintColor = UIColor.white
// 네비게이션 바 제목 텍스트 속성 설정
UINavigationBar.appearance().titleTextAttributes = [
NSAttributedString.Key.foregroundColor: UIColor.white,
NSAttributedString.Key.font: UIFont.boldSystemFont(ofSize: 18)
]
// 네비게이션 바 아이템 여백 조정 (iOS 11 이상)
if #available(iOS 11.0, *) {
UINavigationBar.appearance().layoutMargins.left = 10
UINavigationBar.appearance().layoutMargins.right = 10
}
}