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)
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,016评论 4 62
  • 一 时至端午,岁在仲夏,我的端午节在老家的小院里度过。 “种谷、种谷……”大清早,斑鸠的叫声就在耳边响起,就好似远...
    魏著新阅读 551评论 2 6
  • 01 前几天穿着T恤衫都觉得有种燥热,没几天,套上厚外套却依然觉得不够暖。有时候,实在不敢相信,时间能快成这个样子...
    周末理想阅读 271评论 0 5
  • 拿着水桶打水的时候,月光如水,柔柔地笼罩着大地,我猛然间似乎想起了什么似的,略一抬头,便看见—黑的微微发红的天空上...
    帘卷高楼阅读 305评论 0 0
  • 两真一假 音乐分组 扑克牌分组 OH和塔罗区别 潜意识 思索一个目前想要探究和解决得主题 (OH卡探索,1自我探索...
    黑石_Harry阅读 213评论 0 0