IMG_0001.JPG
1.純代碼搭建一個結構為>Root -> TabBar -> Navigation -> ViewController的小項目
下面看一下appdelegate.swift里面的代碼
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
self.window = UIWindow(frame:UIScreen.main.bounds)
self.window?.makeKeyAndVisible()
let rootViewController = MianTabbarController()
self.window?.rootViewController = rootViewController
return true
}
來到MianTabbarController.swift里面,先創建兩個空的控制器HomeViewController.swift和SettingViewController.swift,分別設置好顏色
super.viewDidLoad()
// 創建ViewControllers
self.creatViewController()
}
func creatViewController(){
let home = HomeViewController()
let homeNvc = UINavigationController(rootViewController:home)
home.title = "HomeViewController"
let setting = SeetingViewController()
let settingNvc = UINavigationController(rootViewController:setting)
setting.title = "SettingViewController"
let tabArray = [homeNvc,settingNvc]
self.viewControllers = tabArray
//底部工具欄背景顏色
self.tabBar.barTintColor=UIColor.gray;
//.設置底部工具欄文字顏色(默認狀態和選中狀態)(選中狀態為藍色)
UITabBarItem.appearance().setTitleTextAttributes(NSDictionary(object:UIColor.white, forKey:NSForegroundColorAttributeName as NSCopying) as? [String : AnyObject], for:UIControlState.normal);
UITabBarItem.appearance().setTitleTextAttributes(NSDictionary(object:UIColor.blue, forKey:NSForegroundColorAttributeName as NSCopying) as? [String : AnyObject], for:UIControlState.selected)
}
效果如圖1.1
圖1.1
二,結構為Navgation->Root -> TabBar -> Navigation -> ViewController,這里是在appdelegate.swift里面創建了一個navigation用于在收到通知的時候點擊遠程通知處理push(當然不在這里創建navigation也是可以push的),這種結構下只需要隱藏appdelegate.swift里面的navigation即可,代碼如下
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
self.window = UIWindow(frame:UIScreen.main.bounds)
self.window?.makeKeyAndVisible()
let main = MianTabbarController()
let nvc = UINavigationController(rootViewController:main)
nvc.navigationBar.isHidden = true
self.window?.rootViewController = nvc
return true
}
效果如圖1.1
三.結構為Root -> TabBar -> ViewController,代碼如下
appdelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
self.window = UIWindow(frame:UIScreen.main.bounds)
self.window?.makeKeyAndVisible()
let main = MianTabbarController()
self.window?.rootViewController = main
return true
}
MianTabbarController.swift
override func viewDidLoad() {
super.viewDidLoad()
// 創建ViewControllers
self.creatViewController()
}
func creatViewController(){
let home = HomeViewController()
let setting = SeetingViewController()
let tabArray = [home,setting]
self.viewControllers = tabArray
//底部工具欄背景顏色
self.tabBar.barTintColor=UIColor.gray;
//.設置底部工具欄文字顏色(默認狀態和選中狀態)(選中狀態為藍色)
UITabBarItem.appearance().setTitleTextAttributes(NSDictionary(object:UIColor.white, forKey:NSForegroundColorAttributeName as NSCopying) as? [String : AnyObject], for:UIControlState.normal);
UITabBarItem.appearance().setTitleTextAttributes(NSDictionary(object:UIColor.blue, forKey:NSForegroundColorAttributeName as NSCopying) as? [String : AnyObject], for:UIControlState.selected)
}
效果如圖1.2
圖1.2
四 導航欄的一些基本設置
1. 設置導航欄的背景顏色 如圖1.3
1.3 設置導航欄背景顏色
//設置導航欄背景顏色
let bgColor = UIColor(red: 100/255, green:200/225, blue: 60/255, alpha: 1)
self.navigationController?.navigationBar.barTintColor = bgColor
2. 設置導航欄文字的顏色為白色, 如圖1.3 ,代碼如下
// 設置導航欄文字的顏色為白色
self.navigationController?.navigationBar.titleTextAttributes =
[NSForegroundColorAttributeName: UIColor.white]
3. 設置導航欄返回按鈕的顏色,如圖1.4,代碼如下
//修改導航欄按鈕顏色
self.navigationController?.navigationBar.tintColor = UIColor.white
1.4 設置導航欄返回按鈕的顏色
4. 設置導航欄背景圖片,代碼如下
// 設置導航欄的背景圖片
self.navigationController?.navigationBar
.setBackgroundImage(UIImage(named: "bg5"), for: .default)
5. 設置tabbar 的背景顏色,如圖1.5,代碼如下
//底部工具欄背景顏色
self.tabBar.barTintColor=UIColor.gray;
1.5 設置tabbar的背景顏色,灰色
5. 設置tabbar文字的顏色,如圖1.5 ,代碼如下
//.設置底部工具欄文字顏色(默認狀態和選中狀態)(選中狀態為藍色)
UITabBarItem.appearance().setTitleTextAttributes(NSDictionary(object:UIColor.white, forKey:NSForegroundColorAttributeName as NSCopying) as? [String : AnyObject], for:UIControlState.normal);
UITabBarItem.appearance().setTitleTextAttributes(NSDictionary(object:UIColor.blue, forKey:NSForegroundColorAttributeName as NSCopying) as? [String : AnyObject], for:UIControlState.selected)
框架結構以及tabbar和navigationbar就設置到這里,下面創建按鈕push到下一頁面,代碼如下
// 創建push按鈕
func creatPushButton(){
let pushBtn:UIButton = UIButton(frame:CGRect(x:0 , y:66 ,width:150 ,height:100 ))
pushBtn.backgroundColor = UIColor.white
pushBtn.setTitle("點擊push下一頁", for: UIControlState.normal)
pushBtn.setTitleColor(UIColor.black, for: UIControlState.normal)
self.view .addSubview(pushBtn)
pushBtn.addTarget(self, action:#selector(pushMine), for: UIControlEvents.touchUpInside)
}
func pushMine() {
let mine = MineViewController()
self.navigationController?.pushViewController(mine, animated: true)
//present方式
// let mine = MineViewController()
//self.present(mine, animated: true, completion: nil)
}