1.效果图

   

2.NewsViewController.swift

//
// NewsViewController.swift
// NavigationDemo
//
// Created by 赵超 on 14-6-27.
// Copyright (c) 2014年 赵超. All rights reserved.
// import UIKit class NewsViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor=UIColor.blueColor()
self.title="新闻"
}
}

3.MoviewViewController.swift

//
// MovieViewController.swift
// NavigationDemo
//
// Created by 赵超 on 14-6-27.
// Copyright (c) 2014年 赵超. All rights reserved.
// import UIKit class MovieViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor=UIColor.redColor()
self.title="电影"
}
}

4.AppDelegate.swift

//
// AppDelegate.swift
// NavigationDemo
//
// Created by 赵超 on 14-6-27.
// Copyright (c) 2014年 赵超. All rights reserved.
// import UIKit @UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
// Override point for customization after application launch.
self.window!.backgroundColor = UIColor.whiteColor()
self.window!.makeKeyAndVisible()
//设置根控制器
var root=RootViewController()
self.window!.rootViewController=root
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:.
} }

5.RootViewController.swift

//
// RootViewController.swift
// NavigationDemo
//
// Created by 赵超 on 14-6-27.
// Copyright (c) 2014年 赵超. All rights reserved.
//å import UIKit class RootViewController: UITabBarController { var tabBarBgImg:UIImageView?
var tabBarBgImgSelected:UIImageView? override func viewDidLoad() {
super.viewDidLoad()
//隐藏自带tabBarItem
self.tabBar.hidden=true
customTabBar()
loadViewController()
}
//选择视图
func test(tap:UITapGestureRecognizer){
var view=tap.view
var index=view.tag as Int
var z=(index)*57
var c=CGFloat(z)
var x:CGFloat=5.0 + c
var y=tabBarBgImg!.frame.size.height/2-45/2
UIView.beginAnimations("test",context:nil)
tabBarBgImgSelected!.frame = CGRectMake(x ,y, 50, 45)
UIView.commitAnimations()
//跳转页面
self.selectedIndex=view.tag } //自定义tabBar视图
func customTabBar(){ var height=UIScreen.mainScreen().bounds.size.height
var width=UIScreen.mainScreen().bounds.size.width
var tabW=width
var tabH=height-49
tabBarBgImg=UIImageView(frame:CGRectMake(0,tabH,tabW,49))
//打开事件
tabBarBgImg!.userInteractionEnabled=true
tabBarBgImg!.image=UIImage(named:"tab_bg_all") //选中背影图片
var y=tabBarBgImg!.frame.size.height/2-45/2
tabBarBgImgSelected=UIImageView(frame:CGRectMake(5,y, 50, 45))
tabBarBgImgSelected!.image=UIImage(named:"selectTabbar_bg_all1")
tabBarBgImg!.addSubview(tabBarBgImgSelected) var x:CGFloat=0
var images=["icon_cinema","msg_new"]
var titles=["电影","新闻"]
var titleFont=UIFont.systemFontOfSize(12)
for index in 0..2{
var imgView=UIImageView(frame:CGRectMake( x+18, y+5, 22, 22))
//添加事件
imgView.userInteractionEnabled=true
imgView.tag=index
var tap=UITapGestureRecognizer(target:self,action:Selector("test:"))
imgView.addGestureRecognizer(tap) imgView.image = UIImage(named:images[index])
tabBarBgImg!.addSubview(imgView)
var title=UILabel(frame:CGRectMake(x+16,y+26,45,15))
title.text=titles[index]
title.font=titleFont
title.textColor = UIColor.whiteColor()
tabBarBgImg!.addSubview(title)
x+=57
}
self.view.addSubview(tabBarBgImg) } //加载子视图控制器
func loadViewController(){
//USA
var movie=MovieViewController()
var movieItem=UITabBarItem(tabBarSystemItem: .Favorites,tag:1)
movie.tabBarItem=movieItem
var movieNav=UINavigationController(rootViewController:movie)
//News
var news=NewsViewController()
var newsItem=UITabBarItem(tabBarSystemItem: .Favorites,tag:2)
news.tabBarItem=newsItem
var newsNav=UINavigationController(rootViewController:news) //数组
var ctrls=[movieNav,newsNav]
//添加
self.setViewControllers(ctrls,animated:true)
} }

完整代码: https://github.com/whzhaochao/CustomTabBarItem

swift 自定义TabBarItem的更多相关文章

  1. [IOS]swift自定义uicollectionviewcell

    刚刚接触swift以及ios,不是很理解有的逻辑,导致某些问题.这里分享一下swift自定义uicollectionviewcell 首先我的viewcontroller不是直接继承uicollect ...

  2. Swift 自定义打印方法

    Swift 自定义打印方法 代码如下 // MARK:- 自定义打印方法 func MLLog<T>(_ message : T, file : String = #file, funcN ...

  3. swift 自定义图片轮播视图

    Swift封装图片轮播视图: import UIKit class XHAdLoopView: UIView { private var pageControl : UIPageControl? pr ...

  4. Swift 自定义Subscript

    Swift可以方便给自定义类加下标,其中参数和返回值可以在类里定义为任意类型: subscript(parameters) -> ReturnType { get { //return some ...

  5. swift:自定义UICollectionViewFlowLayout

    写作目的 UICollectionView是ios中一个十分强大的控件,利用它能够十分简单的实现一些很好看的效果.UICollectionView的效果又依赖于UICollectionViewLayo ...

  6. Swift - 自定义UIActivity分享

    UIActivity可以十分方便地将文字.图片等内容进行分享,比如分享到微信.微博.发送邮件.短信等等.我们不仅可以分享内容出来,也可以在自己的App里添加自己的分享按钮或隐藏已有的分享按钮来实现定制 ...

  7. Swift - 自定义单元格实现微信聊天界面

    1,下面是一个放微信聊天界面的消息展示列表,实现的功能有: (1)消息可以是文本消息也可以是图片消息 (2)消息背景为气泡状图片,同时消息气泡可根据内容自适应大小 (3)每条消息旁边有头像,在左边表示 ...

  8. swift 自定义弹框

    // //  ViewController.swift //  animationAlert // //  Created by su on 15/12/9. //  Copyright © 2015 ...

  9. Swift自定义AlertView

    今天项目加新需求,添加积分过期提醒功能: 第一反应就用系统的UIAlertViewController,但是message中积分是需要红色显示. // let str = "尊敬的顾客,您有 ...

随机推荐

  1. (Problem 37)Truncatable primes

    The number 3797 has an interesting property. Being prime itself, it is possible to continuously remo ...

  2. 在word中批量制作条形码

    条码打印软件可以批量生成条形码然后直接打印,但是有些客户不需要直接打印,而是想将生成的条形码在word中进行排版,发给自己的客户或者下属部门来打印.那么如何实现在word中批量制作条形码呢? 操作很简 ...

  3. jsp验证表单后再提交

    在提交表单时,我们常常需要验证核实表单内容,若都不为空时,方能提交:若有文本框为空则不提交,并获取鼠标焦点到文本框上 ,所以我们可以利用onsubmit的方法来做,请看下面例子: <html&g ...

  4. &lt;深入理解C指针&gt;学习笔记和总结 第四章 指针和数组

    数组是一个什么玩意: 数组和指针我的理解,有同样之处也有不同之处.因有同样之处,因此一些资料上说,数组和指针本质是同样的.因有不同之处,因此也有一些资料上说,数组和指针是不一样的. 同样之处: 数组名 ...

  5. 解析带有命名空间问题web.xml

    <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" ...

  6. Android面试题整理(1)

    1.Activity的生命周期      onCreate(Bundle saveInstanceState):创建activity时调用.      onStart():activity可见时调用 ...

  7. Hibernate入门之配置文件

    <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hi ...

  8. Jquery中$.ajax()方法参数详解(转)

    转自:http://blog.sina.com.cn/doctor830619 url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数, ...

  9. ASP.NET MVC进阶之路:深入理解Controller激活机制并使用Ioc容器创建对象

    本文标题说是"深入理解Controller"其实有点“标题党”的味道了.本篇只会探讨"Controller"的激活机制,也就是如何创建Controller的并调 ...

  10. ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解

    原文 ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解 在教程的这一部分,我们将研究一下自动生成的 Details 和Delete 方法. Details 方法 打开M ...