博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift开发小技巧--TabBar中间按钮的添加方案
阅读量:5935 次
发布时间:2019-06-19

本文共 1737 字,大约阅读时间需要 5 分钟。

TabBar中间按钮的添加方案

762322-20160628224133109-262071779.png

之前做百思项目的时候,也有一个中间按钮,当时是重写的TabBar,这里介绍一个新的方法

  • 给TabbarVC多添加添加一个控制器,这个控制器的作用仅仅是用来占位的,多了这个控制器中间才会空出一个按钮的位置,不设置文字,不设置图片
// 加号按钮的位置self .addChildViewController("NullViewController", title: "", normalImage: "")
  • 懒加载按钮,注意swift懒加载的书写
// MARK: - 懒加载    private lazy var composeBtn : UIButton = {        () -> UIButton in // 懒加载本质是闭包,只是将这行省略了        // 初始化按钮        let composeBtn = UIButton()        // 设置按钮图片        composeBtn.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: UIControlState.Normal)        composeBtn.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: UIControlState.Highlighted)        // 设置背景图片        composeBtn.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: UIControlState.Normal)        composeBtn.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: UIControlState.Highlighted)        // 给按钮添加点击事件        composeBtn.addTarget(self, action: Selector("composeBtnClick:"), forControlEvents: UIControlEvents.TouchUpInside)        // 设置按钮的尺寸        composeBtn.sizeToFit()        return composeBtn    }()
  • 合适的方法里面添加按钮,这里为什么要强调合适呢,因为之前为了空出按钮的位置,往TabBarVC中添加了一个占位的控制器,同时系统会在TabBar相应的位置添加一个BarButtonItem.自定义按钮如果添加在BarButtonItem之前在viewDidLoad方法里面,那么自定义按钮的单机事件就会被阻挡.

762322-20160628230521765-918108892.png

override func viewWillAppear(animated: Bool) {        super.viewWillAppear(animated)        // 添加中间按钮        // 按钮在viewDidLoad中添加,会被系统的BarButtonItem挡住,处理不了事件了        // viewWillAppear中添加按钮,在系统的BarButtonItem之后添加        self.tabBar.addSubview(composeBtn)        // 设置按钮的位置        let rect = self.tabBar.frame        let width = rect.width / CGFloat(childViewControllers.count)        composeBtn.frame = CGRect(x: 2 * width, y: 0, width: width, height: rect.height)    }

转载地址:http://vyjtx.baihongyu.com/

你可能感兴趣的文章
如何判断服务器被DDOS了?
查看>>
《Python参考手册(第4版•修订版)》——1.10 迭代与循环
查看>>
《Android 源码设计模式解析与实战》——第1章,第1.4节让项目拥有变化的能力——依赖倒置原则...
查看>>
浅谈html引入css的几种方式
查看>>
《jQuery Cookbook中文版》——1.4 在指定上下文中选择DOM元素
查看>>
畅捷通入驻阿里云市场,为小微企业在线“号脉开方”
查看>>
《数据驱动的网络分析》——2.3 NetFlow
查看>>
《C++编程调试秘笈》——2.2 怎样用编译器捕捉缺陷
查看>>
Apache Storm 官方文档 —— 常用模式
查看>>
Java网络教程-基础
查看>>
并发数据结构-1.1.3 非阻塞技术
查看>>
实用的系统工具之 lsof
查看>>
中国研发首个神经网络处理器
查看>>
在 Ubuntu Server 16.04 LTS 上安装 LAMP
查看>>
《HTML5 canvas开发详解(第2版)》——1.10 第二个示例:猜字母
查看>>
android加载大图,防止oom
查看>>
2016,再见,在也不见
查看>>
RecyclerView 实现gallery画廊效果
查看>>
myrocks统计信息
查看>>
【区块链之技术实战】在金融领域,区块链该咋用呢?
查看>>