标签:
如下图效果图:

我觉得挺好看的,哈哈哈
分析:
如果我们直接调用系统的API,一个一个控制器添加到tabbar中,效果会是这样

好丑!,原因是本来图标大小不合适,而且系统会帮你渲染。
我这里是通过KVC方法修改了系统的UITabbar,使用自定义的Tabbar
//在ABTabbarControl.m文件中,继承与UITabbarControl
//在创建一个ABTabbar,继承与UITabbar
//在viewdidLoad方法中替换系统的Tabbar
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
setupNav()
setupTabBar()
}
func setupTabBar(){
let tabbar = ABTabbar()
setValue(tabbar, forKey: "tabBar")
}
我的思路是这样的,先把中间那个按钮不加入tabbar中,而是通过重写它的layoutSubview方法在加入进去
然后在ABTabbar重写它的layoutSubview方法
import UIKit
class ABTabbar: UITabBar {
//创建中间的那个按钮
lazy var plusButton : UIButton = {
let btn = UIButton.init(type: UIButtonType.Custom)
btn.setImage(UIImage(named: "icon_tabBar_speedy_menu_selected"), forState: .Normal)
btn.setImage(UIImage(named: "icon_tabBar_speedy_menu"), forState: .Selected)
btn.sizeToFit()
self.addSubview(btn)
return btn
}()
override func layoutSubviews() {
super.layoutSubviews()
let count = (items?.count)! + 1
var x : CGFloat = 0.0
let y : CGFloat = 0.0
let w : CGFloat = bounds.size.width / CGFloat(count)
let h : CGFloat = bounds.size.height
var num = 0
for item in self.subviews{
//判断是否为button
if !item.isKindOfClass(NSClassFromString("UITabBarButton")!) {continue}
// 留一个位置给中间的button
if num == 2 {num = 3}
x = CGFloat(num) * w
item.frame = CGRectMake(x, y, w, h)
num = num + 1
}
//这是给中间的button设置frame,在中间的位置,
//我在Y值上减了15, 这样它的位置会稍微移上一点,感觉很好看
self.plusButton.center = CGPointMake(self.frame.size.width * 0.5 ,(self.frame.size.height * 0.5 - 15))
}
}
如何在UITabbar自定义修改并添加UIBarButtomItem ----ios
标签:
原文地址:http://www.cnblogs.com/beNabenen/p/5655348.html