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,295评论 4 61
  • 一 时至端午,岁在仲夏,我的端午节在老家的小院里度过。 “种谷、种谷……”大清早,斑鸠的叫声就在耳边响起,就好似远...
    魏著新阅读 591评论 2 6
  • 01 前几天穿着T恤衫都觉得有种燥热,没几天,套上厚外套却依然觉得不够暖。有时候,实在不敢相信,时间能快成这个样子...
    周末理想阅读 304评论 0 5
  • 拿着水桶打水的时候,月光如水,柔柔地笼罩着大地,我猛然间似乎想起了什么似的,略一抬头,便看见—黑的微微发红的天空上...
    帘卷高楼阅读 330评论 0 0
  • 两真一假 音乐分组 扑克牌分组 OH和塔罗区别 潜意识 思索一个目前想要探究和解决得主题 (OH卡探索,1自我探索...
    黑石_Harry阅读 236评论 0 0