Swift之UITabBarController 导航控制器的自定义

swift导航控制器,导航控制器类继承UITabBarController,具体代码如下所示:

 // AppDelegate.swift
 // Housekeeper
 //
 // Created by 卢洋 on //.
 // Copyright © 年 奈文摩尔. All rights reserved.
 //
 import Foundation
 import UIKit
 @UIApplicationMain
 class AppDelegate: UIResponder, UIApplicationDelegate {
   var window: UIWindow?
   //var indexTab:UITabBarController?;
   func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
     // 应用程序启动后
     //.声明一个空视图
     self.window = UIWindow(frame: UIScreen.mainScreen().bounds);
     self.window!.backgroundColor=UIColor.whiteColor();
     //.导航背景颜色
     UINavigationBar.appearance().barTintColor=UIColor.appMainColor();
     UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(CGFloat(NSInteger.min),CGFloat(NSInteger.min)), forBarMetrics:UIBarMetrics.Default);
     //.导航标题文字颜色
     UINavigationBar.appearance().titleTextAttributes=NSDictionary(object:UIColor.whiteColor(), forKey:NSForegroundColorAttributeName) as? [String : AnyObject];
     //.将状态栏变为白色
     UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent;
     //.设置返回按钮颜色
     UINavigationBar.appearance().tintColor=UIColor.whiteColor();
    //.指定根视图
     let rootView=NTViewController();
     self.window!.rootViewController=rootView;
     self.window!.makeKeyAndVisible();
     //.初始化键盘插件
     //let manage:IQKeyboardManager=IQKeyboardManager.sharedManager();
     //manage.enable=true;
     //manage.shouldResignOnTouchOutside=true;
     //manage.shouldToolbarUsesTextFieldTintColor=true;
     //manage.enableAutoToolbar=true;
     return true
   }
   func applicationWillResignActive(application: UIApplication) {
     // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
     // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
   }
   func applicationDidEnterBackground(application: UIApplication) {
     // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
     // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
   }
   func applicationWillEnterForeground(application: UIApplication) {
     // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
   }
   func applicationDidBecomeActive(application: UIApplication) {
     // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
   }
   func applicationWillTerminate(application: UIApplication) {
     // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
   }
 }

2.下面是我自定义的导航控制器类,继承 UITabBarController

//
 // NTViewController.swift
 // Housekeeper
 //
 // Created by 卢洋 on //.
 // Copyright © 年 奈文摩尔. All rights reserved.
 //
 import Foundation
 import UIKit
 class NTViewController:UITabBarController{
   //页面初始化
   override func viewDidLoad() {
     super.viewDidLoad();
     //.创建首页导航控制器
     let vwIndex=index();
     let navIndex=UINavigationController(rootViewController: vwIndex);
     navIndex.title="首页";
     navIndex.tabBarItem.image=UIImage(named: "home.png")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal); //默认显示图片
     navIndex.tabBarItem.selectedImage=UIImage(named: "homes.png")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal); //选中后的图片
     //.创建活动信息导航控制器
     let vwActivityInfo=activityInfo();
     let navActivityInfo=UINavigationController(rootViewController: vwActivityInfo);
     navActivityInfo.title="活动信息";
     navActivityInfo.tabBarItem.image=UIImage(named: "Activity-information.png")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal);
     navActivityInfo.tabBarItem.selectedImage=UIImage(named: "Activity-informations.png")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal);
     //.创建车辆展示导航控制器
     let vwCarDisplay=carDisplay();
     let navCarDisplay=UINavigationController(rootViewController: vwCarDisplay);
     navCarDisplay.title="车辆展示";
     navCarDisplay.tabBarItem.image=UIImage(named: "Vehicle-display.png")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal);
     navCarDisplay.tabBarItem.selectedImage=UIImage(named: "Vehicle-displays.png")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal);
     //.创建个人中心导航控制器
     let vwPersonalCenter=personalCenter();
     let navPersonalCenter=UINavigationController(rootViewController: vwPersonalCenter);
     navPersonalCenter.title="个人中心";
     navPersonalCenter.tabBarItem.image=UIImage(named: "Personal-Center.png")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal);
     navPersonalCenter.tabBarItem.selectedImage=UIImage(named: "Personal-Centers.png")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal);
     //.添加到工具栏
     let items=[navIndex,navActivityInfo,navCarDisplay,navPersonalCenter];
     self.viewControllers=items;
     self.navigationController?.navigationBar.tintColor=UIColor.whiteColor();
     //.自定义工具栏
     self.tabBar.backgroundColor=UIColor.clearColor();
     //底部工具栏背景颜色
     self.tabBar.barTintColor=UIColor.appMainColor();
     //.设置底部工具栏文字颜色(默认状态和选中状态)
     UITabBarItem.appearance().setTitleTextAttributes(NSDictionary(object:UIColor.whiteColor(), forKey:NSForegroundColorAttributeName) as? [String : AnyObject], forState:UIControlState.Normal);
     UITabBarItem.appearance().setTitleTextAttributes(NSDictionary(object:UIColor.blueWithTabbar(), forKey:NSForegroundColorAttributeName) as? [String : AnyObject], forState:UIControlState.Selected)
     //self.tabBar.tintColorDidChange()=UIColor.greenColor();
 //    let viewBar=UIView(frame:CGRectMake(,,UIScreen.mainScreen().bounds.width, ));
 //    viewBar.backgroundColor=UIColor(patternImage:UIImage(named:"TabbarBg.png")!);
 //    self.tabBar.insertSubview(viewBar, atIndex:)
 //    self.tabBar.opaque=true
 //    self.tabBar.tintColor=UIColor.appMainColor();
   }
 }

效果图如下:

(0)

相关推荐

  • 在一个项目中同时使用Swift和Objective-C代码混合编程的方法

    Swift 与 Objective-C 的兼容能力使你可以在同一个工程中同时使用两种语言.你可以用这种叫做 mix and match 的特性来开发基于混合语言的应用,可以用 Swfit 的最新特性实现应用的一部分功能,并无缝地并入已有的 Objective-C 的代码中. Mix and Match 概述 Objective-C 和 Swift 文件可以在一个工程中并存,不管这个工程原本是基于 Objective-C 还是 Swift.你可以直接往现有工程中简单地添加另一种语言的源文件.这种自

  • Swift流程控制之循环语句和判断语句详解

    Swift提供了所有c类语言的控制流结构.包括for和while循环来执行一个任务多次:if和switch语句来执行确定的条件下不同的分支的代码:break和continue关键字能将运行流程转到你代码的另一个点上. 除了C语言传统的for-condition-increment循环,Swift加入了for-in循环,能更加容易的遍历arrays, dictionaries, ranges, strings等其他序列类型. Swift的switch语句也比C语言的要强大很多. Swift中swi

  • swift中的正则表达式小结

    作为一门先进的编程语言,Swift 可以说吸收了众多其他先进语言的优点,但是有一点却是让人略微失望的,就是 Swift 至今为止并没有在语言层面上支持正则表达式. 正则表达式的用处: 判断给定的字符串是否符合某一种规则(专门用于操作字符串) - 电话号码,电子邮箱,URL... - 可以直接百度别人写好的正则 - 别人真的写好了,而且测试过了,我们可以直接用 - 要写出没有漏洞正则判断,需要大量的测试,通常最终结果非常负责 过滤筛选字符串,网络爬虫 替换文字,QQ聊天,图文混排 语法规则 使用过

  • Swift面试题及答案整理

    前言 Swift语言至今诞生有一年多的时间了,已经成为当前最流行语言之一.虽然它的语法简单好用,但实际上Swift是一门非常复杂的语言.因为它不仅是面向对象的同时又是函数式编程语言.本文主要介绍Swift常见的一些面试问题,你可以用这些问题向面试者提问,也可以用来测试你自己目前所掌握的Swift知识,如果你不清楚问题答案的话也不用太担心,因为每个问题下面都有相应的答案. 一.给一个数组,要求写一个函数,交换数组中的两个元素 二X程序员: 好简单啊,直接写出以下结果 func swap(_ num

  • Swift教程之字符串和字符详解

    一个字符串String就是一个字符序列,像"hello,world","albatross"这样的.Swift中的字符串是用String关键词来定义的,同时它也是一些字符的集合,用Character定义. Swift的String和Character类型为代码提供了一个快速的,兼容Unicode的字符解决方案.String类型的初始化和使用都是可读的,并且和C中的strings类似.同时String也可以通过使用+运算符来组合,使用字符串就像使用Swift中的其他基

  • Swift在控件中添加点击手势的方法

    今天有同行问我,如何在tableview的headerview中添加点击方法,今天就来简简单单说明一下,在swift中添加点击手势的方法是: 复制代码 代码如下: imagepath.addGestureRecognizer(UITapGestureRecognizer(target: self, action: "imagePathClick:")) 怎么样,看上去是不是比oc简单多了呢,简单解释一下,imagePath是我定义的一个UIImageView,可能有人添加了这个手势之后

  • Swift中动态调用实例方法介绍

    在 Swift 中有一类很有意思的写法,可以让我们不直接使用实例来调用这个实例上的方法,而是通过类型取出这个类型的某个实例方法的签名,然后再通过传递实例来拿到实际需要调用的方法.比如我们有这样的定义: 复制代码 代码如下: class MyClass {     func method(number: Int) -> Int {         return number + 1     } } 想要调用 method 方法的话,最普通的使用方式是生成MyClass的实例,然后用.method来

  • Swift的74个常用内置函数介绍

    Swift包含了74个内置函数,但在 The Swift Programming Langage 一书中只介绍了其中的7个,其它的都没有在文档中体现. 这篇文章列举出了所有的Swift库函数.文中所谓的 内置函数 是指无需引入任何模块(比如说Fundation等)即可以直接使用的函数. 下面先来看看7个在文档中提到的库函数: 下面列出一些很实用,但未在文档中体现的库函数: 复制代码 代码如下: //断言,参数如果为`true`则继续,否则抛出异常 //assert mentioned on pa

  • Swift中的可变参数函数介绍

    可变参数函数指的是可以接受任意多个参数的函数,我们最熟悉的可能就是 NSString 的 -stringWithFormat:方法了.在 Objective-C 中,我们使用这个方法生成字符串的写法是这样的: 复制代码 代码如下: NSString *name = @"Tom"; NSDate *date = [NSDate date]; NSString *string = [NSString stringWithFormat:                 @"Hell

  • Swift教程之枚举类型详解

    枚举定义了一个常用的具有相关性的一组数据,并在你的代码中以一个安全的方式使用它们. 如果你熟悉C语言,你就会知道,C语言中的枚举指定相关名称为一组整数值.在Swift中枚举更为灵活,不必为枚举的每个成员提供一个值.如果一个值(被称为"原始"的值)被提供给每个枚举成员,则该值可以是一个字符串,一个字符,或者任何整数或浮点类型的值. 另外,枚举成员可以指定任何类型,每个成员都可以存储的不同的相关值,就像其他语言中使用集合或变体.你还可以定义一组通用的相关成员为一个枚举,每一种都有不同的一组

随机推荐