布局TabBar中的items

  • Tabbar中应该有5个Item

    • 主页/消息/发布按钮/发现/我
  • 布局TabBar中的Items可以通过下面的方式
    • 通过自定义TabBar的方式
    • 多添加一个控制器,让中间空出位置
  • 注意:如果只是在storyboard中设置item的图片,不能设置选中的图片,因此需要通过代码重新设置
    /// 图片数组
private lazy var imageNames : [String] = {
return ["tabbar_home", "tabbar_message_center", "" ,"tabbar_discover", "tabbar_profile"]
}() private func adjustItems() {
for i in 0..<tabBar.items!.count {
// 1.取出item
let item = tabBar.items![i] // 2.如果是第二个item,则不可以和用户交互.并且不需要设置图片
if i == 2 {
item.enabled = false
continue
} // 2.设置图片
item.image = UIImage(named: imageNames[i])
item.selectedImage = UIImage(named: imageNames[i] + "_highlighted")
}
}

添加'+'按钮

  • 创建UIButton

    • 扩展UIButton的构造函数
    convenience init(imageName : String, bgImageName : String) {
self.init() // 设置相关属性
setBackgroundImage(UIImage(named: bgImageName), forState: .Normal)
setBackgroundImage(UIImage(named: bgImageName + "_highlighted"), forState: .Highlighted)
setImage(UIImage(named: imageName), forState: .Normal)
setImage(UIImage(named: imageName + "_highlighted"), forState: .Highlighted)
sizeToFit()
}
  • 通过懒加载创建UIButton,并且在viewWillAppear中添加按钮
/// 发布微博按钮
private lazy var composeBtn : UIButton = {
// let btn = UIButton.createButton("tabbar_compose_icon_add", bgImageName: "tabbar_compose_button")
let btn = UIButton(imageName: "tabbar_compose_icon_add", bgImageName: "tabbar_compose_button")
btn.center = CGPoint(x: self.tabBar.bounds.width * 0.5, y: self.tabBar.bounds.height * 0.5) // 监听按钮的点击
// Selector("composeBtnClick")
// "composeBtnClick"
btn.addTarget(self, action: Selector("composeBtnClick"), forControlEvents: .TouchUpInside) return btn
}() override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated) // 1.调整items
adjustItems() // 2.添加`加号`按钮
tabBar.addSubview(composeBtn)
}

布局TabBar的更多相关文章

  1. 隐藏tabBar页面跳转后会再布局一次,

    隐藏tabBar有2种方式 1,在sourceController中隐藏目的控制器的tabBar - (void)prepareForSegue:(UIStoryboardSegue *)segue ...

  2. 总结UIViewController的view在有navBar和tabBar影响下布局区域的问题

    影响 View 布局区域的有以下三个属性: self.edgesForExtendedLayout (影响View布局区域的主要属性) self.navigationController.naviga ...

  3. 主程序底部TabBar功能跟登录页面布局

    1:主程序底部TabBar的功能实现 效果图: 主要代码如下: - (UITabBarController*)setRootVC:(BOOL)bShowCart { //创建一个子控制器 用于显示当前 ...

  4. 自定义tabBar

    ★★★★自定义tabBar★★★★★★★ Demo下载地址:https://github.com/marlonxlj/tabBarCustom.git 前言: 有的时候需求要对tabBar进行自定义的 ...

  5. 微信js框架第二篇(创建完整界面布局)

    接着昨天的继续谈关于微信新出的这个js框架,今天主要谈一个页面的创建到布局的详细步骤. 一.创建一个完整页面       页面你可以创建在项目的任何节点,只要你在入口文件正确引入创建该页面的路径就可使 ...

  6. android FragmentActivity+FragmentTabHost+Fragment框架布局

    这周比较闲,计划系统的学习一下android开发,我本是一名IOS程序员,对手机开发还是有自己的一套思路的, 固这套思路用到我当前学android上了,先选择从Main页面的tabbar部分代码入手, ...

  7. Material Design Lite,简洁惊艳的前端工具箱 之 布局组件。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博客地址为http://www.cnblogs.com/jasonnode/ .网站上有对应每一 ...

  8. UITabBar,UINavigationBar的布局和隐藏问题

    ---恢复内容开始--- 1. 前言 UITabBar,UINavigationBar非常的好用,但是毕竟是系统自带的,不受自己完全掌握,对于布局和隐藏会有一些问题,现在就来谈谈我的想法和一些问题. ...

  9. react native 布局注意点

    一.react native中很多是ES6语法. 1行.表示是js的严格模式. 'use strict';严格模式中变量必须先声明,然后赋值.定义等:还有就是this的绑定. 2行到8行.导入依赖,可 ...

随机推荐

  1. ELBO surgery: yet another way to carve up the variational evidence lower bound

    目录 概 主要内容 Evidence minus posterior KL Average negative energy plus entropy Average term-by-term reco ...

  2. SpringBoot集成Log4j2框架

    1.说明 本文详细介绍Spring Boot集成Log4j2框架的方法, 基于已经创建好的Spring Boot工程, 由于Spring Boot默认使用的是Logback框架, 需要先排除掉Logb ...

  3. 使用.NET 6开发TodoList应用(21)——实现API版本控制

    系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 API接口版本管理,对于一些规模稍大的企业应用来说,是经常需要关注的一大需求.尽管我们的示例程序TodoList很简单,但是我 ...

  4. MongoDB学习 - 安装部署

    1. docker 启动 拉取镜像 docker pull mongo:latest 指定目录启动  docker run -d -p 27017:27017 --name mongo \-v /ho ...

  5. Samba服务器搭建与配置

    Samba服务简介Samba的起源:对于windows的网上邻居来讲,共享文件的方式用的是SMB和CIFS协议以及NETBIOS协议Linux/Unix之间用的是NFS协议. ​ 但是Linux和Wi ...

  6. PPT制作手机手指滑动效果

    原文链接:https://www.toutiao.com/i6495304998786695694/ 上一节我们完成了手机滑动粗糙效果,这部分我们将给动画添加一个手指的图片. 首先,选择"插 ...

  7. Elasticsearch安装与配置

    一.下载(华为云) https://mirrors.huaweicloud.com/elasticsearch/https://mirrors.huaweicloud.com/kibana/7.6.2 ...

  8. 贝塞尔曲线(面)二三维可视化(Three+d3)

    贝塞尔曲线(面)二三维可视化(Three+d3) 在学完 games101 几何后开始实践,可视化贝塞尔曲线 我想实现三维的贝塞尔曲线,用 threejs,但是 threejs 控制太麻烦了,因此,我 ...

  9. spring是线程安全的吗

    spring默认bean是单例无状态的,我们交给spring管理的service,controller都是一个单例的bean,也就是说多个线程共享一个实例. 如果你在这种类里写成员变量,那这个变量的访 ...

  10. day 20 C语言顺序结构基础3

    (1).若有定义:int a=100:则语句printf("%d%d%d\n",sizeof("a"),sizeof(a),sizeof(3.14)); 则输出 ...