Swift - 自定义tabbar的封装

简介: Swift - 自定义tabbar的封装

前言:前面三篇博客说到的问题都出自这篇博客中tabbar的封装,而且Object-C版本的封装前面也发过,一样的东西,换了种语言来写。


所以呢,先看下效果:

1.png

代码简单贴下,大家看看,然后直接到下面找下载地址:

import UIKit
class LHHTabbar: UIView {
    /*
    // Only override drawRect: if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    override func drawRect(rect: CGRect) {
        // Drawing code
    }
    */
    /*
     bgImageName和isUse只能有一个使用另一个必为nil,用来设置整个Tabbar背景色
     */
    func creatLHHTabbar(backGroundImage:String?,orUseBackGroundView:Bool,bgViewColor:UIColor ,viewControllerArray:NSArray,normalImageArray:NSArray,selectImageArray:NSArray,itemTitleArray:NSArray,currentTarget:AnyObject,selector:Selector) {
        //创建tabbar背景色,可用图片背景也可用纯色view设置背景
        self.creatLHHTabbarBG(backGroundImage, orUseBackGroundView: orUseBackGroundView, bgViewColor: bgViewColor)
        //创建选择器
        for var i = 0; i<viewControllerArray.count;i++ {
            self.creatLHHTabbarItem(viewControllerArray, normalImageArray: normalImageArray, selectImageArray: selectImageArray, itemTitleArray: itemTitleArray, currentIndex: i, currentTarget: currentTarget, selector: selector)
        }
    }
    func creatLHHTabbarBG(bgImageName:String?,orUseBackGroundView:Bool,bgViewColor:UIColor) {
        if (bgImageName != nil) {
            let imageView = UIImageView(image: UIImage(named: bgImageName!))
            imageView.frame = self.bounds
            self.addSubview(imageView)
        }
        else
        {
            let label = UILabel(frame: self.bounds)
            label.backgroundColor = bgViewColor
            self.addSubview(label)
        }
    }
    func creatLHHTabbarItem(controllerArray:NSArray,normalImageArray:NSArray,selectImageArray:NSArray,itemTitleArray:NSArray,currentIndex:Int,currentTarget:AnyObject,selector:Selector) {
        let bgView = UIView(frame: CGRectMake((self.bounds.size.width / CGFloat(Float(controllerArray.count))) * CGFloat(Float(currentIndex)), 0, self.bounds.size.width / CGFloat(Float(controllerArray.count)), self.bounds.size.height))
        if currentIndex == 0 {
        }
        else
        {
            bgView.backgroundColor = UIColor.clearColor();
        }
        self.addSubview(bgView)
        let imageView = UIImageView(frame: CGRectMake(0, 0, 20, 20))
        imageView.center = CGPointMake(self.bounds.size.width/CGFloat(Float(controllerArray.count))/2, self.bounds.size.height/2-10)
        imageView.tag = currentIndex;
        imageView.userInteractionEnabled = true;
        if currentIndex == 0 {
            imageView.image = UIImage(named: "\(selectImageArray[currentIndex])")
        }
        else
        {
            imageView.image = UIImage(named: "\(normalImageArray[currentIndex])")
        }
        bgView.addSubview(imageView)
        let label = UILabel(frame: CGRectMake(0, imageView.center.y+20/2, self.bounds.size.width/CGFloat(controllerArray.count), self.bounds.size.height-(imageView.center.y+20/2)))
        label.text = "\(itemTitleArray[currentIndex])"
        if currentIndex == 0 {
            label.textColor = UIColor.init(colorLiteralRed: 0.00, green: 0.76, blue: 0.83, alpha: 1.00)
        }
        else
        {
            label.textColor = UIColor.whiteColor()
        }
        label.textAlignment = NSTextAlignment.Center;
        label.font = UIFont.systemFontOfSize(10)
        bgView.addSubview(label)
        let button = UIButton(type: .System)
        button.frame = CGRectMake(0, 0, bgView.frame.size.width, bgView.frame.size.height)
        button.tag = currentIndex;
        button.addTarget(currentTarget, action: selector, forControlEvents: .TouchUpInside)
        bgView.addSubview(button)
    }
}

以上是封装的部分,下载地址:https://github.com/codeliu6572/Swift_CustomTabbar

目录
相关文章
|
Swift
Swift -banner滚动图自定义
Swift -banner滚动图自定义
186 0
Swift -banner滚动图自定义
|
Swift
Swift之自定义Button
Swift之自定义Button
198 0
Swift之自定义Button
|
Swift
Swift5.1—自定义运算符
Swift5.1—自定义运算符
116 0
|
Swift
swift微博第17天(UITableViewCell的自定义)
swift微博第17天(UITableViewCell的自定义)
212 0
|
Swift
swift微博第9天(自定义微博首页的菜单)
swift微博第9天(自定义微博首页的菜单)
156 0
swift微博第9天(自定义微博首页的菜单)
|
Swift
swift微博第8天(自定义标题按钮)
swift微博第8天(自定义标题按钮)
77 0
|
Swift
swift微博第7天(导航条按钮的封装)
swift微博第7天(导航条按钮的封装)
122 0
swift微博第7天(导航条按钮的封装)
|
Swift iOS开发
UISlider自定义滑动条高度(swift)
UISlider滑动条的高度系统默认给我们设定了,没有办法进行改变。可是,我们的设计又是需要改变这个高度的,怎么办呢?这个时候,我们可以写一个UISlider的子类,重写四个方法就能实现了。
3475 0
SwiftUI直通车系列(5)—— 自定义绘制(二)
SwiftUI直通车系列(5)—— 自定义绘制
133 0
SwiftUI直通车系列(5)—— 自定义绘制(二)

相关课程

更多