swift 設置tabbar和導航控制器(navigationController)及其他基本設置

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)
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,245評論 4 61
  • 一 時至端午,歲在仲夏,我的端午節在老家的小院里度過。 “種谷、種谷……”大清早,斑鳩的叫聲就在耳邊響起,就好似遠...
    魏著新閱讀 580評論 2 6
  • 01 前幾天穿著T恤衫都覺得有種燥熱,沒幾天,套上厚外套卻依然覺得不夠暖。有時候,實在不敢相信,時間能快成這個樣子...
    周末理想閱讀 292評論 0 5
  • 拿著水桶打水的時候,月光如水,柔柔地籠罩著大地,我猛然間似乎想起了什么似的,略一抬頭,便看見—黑的微微發紅的天空上...
    簾卷高樓閱讀 326評論 0 0
  • 兩真一假 音樂分組 撲克牌分組 OH和塔羅區別 潛意識 思索一個目前想要探究和解決得主題 (OH卡探索,1自我探索...
    黑石_Harry閱讀 231評論 0 0