import UIKit/*总结:1:lazy用于懒加载,只能用var来对变量进行懒加载,有两种方式:1:lazy var first = NSArray(objects: "1","2") 2:闭包形式:

lazy var second:String = {

return "second"

}()

例子:

lazy var imageArr = ["tabbar_home_highlighted","tabbar_message_center_highlighted","tabbar_discover_highlighted","tabbar_profile_highlighted"]

lazy var imageArr = {

return ["tabbar_home_highlighted","tabbar_message_center_highlighted","tabbar_discover_highlighted","tabbar_profile_highlighted"]

}();

2:1:设置tabbaritem的代码都必须放在viewWillAppear里,若是在viewDidLoad里,则设置好的item又会在viewWillAppear方法里被系统调整回来 2:for循环遍历,1:要是想获得下标值就用区间遍历 for i in 0..

3:要想类中定义的属性不希望外界来访问,就定义为private,或是fileprivate,private修饰的属性方法,只能在当前类中访问,在同一个文件中定义不同的类就不能在访问另一个类中private修饰的方法或是属性,但是属性或是方法用fileprivate可以在当前文件任何类中进行访问*/

classRHTabBarViewController: UITabBarController {//lazy var imageArr = ["tabbar_home_highlighted","tabbar_message_center_highlighted","tabbar_discover_highlighted","tabbar_profile_highlighted"]

///1:懒加载图片数组

fileprivate lazy var imageArr ={return ["tabbar_home_highlighted","tabbar_message_center_highlighted","","tabbar_discover_highlighted","tabbar_profile_highlighted"]

}();///2:懒加载中间按钮

fileprivate lazy var centerButton =UIButton()overridefunc viewDidLoad() {

super.viewDidLoad()//MARK:-2:添加中间按钮

setupCenterButton()

}overridefunc viewWillAppear(_ animated: Bool) {

super.viewWillAppear(animated)//MARK:-1:设置tabbarItem的高亮图片

setupTabbarItems()

}

}/**

总结:1:extension表示扩展,在定义的类中:RHTabBarViewController,设置该类的扩展,extension RHTabBarViewController {},若是该类有遵守协议关系的时候,继承的协议就在RHTabBarViewController后面加:后面写遵守的协议 2:一般extension扩展用于在某个类中封装方法,在viewDidLoad方法中抽方法封装调用,将封装的方法写在extension的扩展类中,在viewDidLoad直接调用

2:一般在声明的类class中定义属性:1:private,或是filePrivate来修饰,并且一般采用懒加载(1:直接初始化 2:闭包懒加载,{return:一个值}()),若不是懒加载,定义属性变量的时候,必须定义初始化有值,要不定义成可选类型,在后面进行赋值,否则会被报错。 2:在viewDidload中抽方法封装调用,将封装的方法写在extension的扩展类中,在定义方法的时候,也是private,fileprivate来选择修饰,定义有返回值或是无返回值的函数。2:定义的函数中涉及到外部参数与内部参数:在swift中第一个参数默认为内部参数,_+空格+参数名组成,默认从第二个参数开始,既是外部参数又是内部参数,若是想让某个参数成为内部参数,就直接在函数中用_+空格+参数名修饰就可以 3:函数的默认参数,在封装的函数中,也可以给参数设定默认参数,则此时,外部调用就不会显示默认参数,而在参数内部自己可以拿到默认参数的值:如定义的全局打印:fileName:String = #file

func DLog (message: T,fileName:String = #file,funcName:String = #function,lineNum:Int = #line) {

#if DEBUG

let file = (fileName as NSString).lastPathComponent;

print("\(file):\(funcName):\(lineNum):\("打印内容"):\(message)")

#endif

}

3:设置tabbar上的高亮图片:1:tabBar.items为一个可选类型的数组,但是能保证其一定有值,所以可以进行强制解包,若是可选类型的变量能确定一定有值的话就对其进行强制解包 2:创建UIImage的对象:item.selectedImage = UIImage(named: imageArr[i])

4:添加中间的加号按钮:1:懒加载完控件后,首先在方法中将控件添加到父控件中,在同一个类中属于该类的方法可以不去调用self,tabBar.addSubview(centerButton) 2:设置按钮的背景图片centerButton.setBackgroundImage, centerButton.setImage,第二个参数为一个枚举值,枚举值调用就用点语法调用枚举类型,.normal,.highlighted 3:设置按钮的frame:centerButton.sizeToFit()

让按钮的大小等于按钮内容的大小。设置center的时候,设置的是tabbar的centerx,中心点y值为tabba高度的一半*/extension RHTabBarViewController {///1:添加中间的加号按钮

fileprivate func setupCenterButton() {//1:添加按钮

tabBar.addSubview(centerButton)//2:设置图片

centerButton.setBackgroundImage(UIImage(named: "tabbar_compose_button"), for: .normal)

centerButton.setBackgroundImage(UIImage(named:"tabbar_compose_button_highlighted"), for: .highlighted)

centerButton.setImage(UIImage(named:"tabbar_compose_icon_add"), for: .normal)

centerButton.setImage(UIImage(named:"tabbar_compose_icon_add_highlighted"), for: .highlighted)//3:设置frame

centerButton.sizeToFit()

centerButton.center= CGPoint(x: tabBar.center.x, y: tabBar.bounds.size.height * 0.5)

}///2:设置的是tabbar上的高亮图片

fileprivate func setupTabbarItems() {for i in 0..

let item= tabBar.items![i]if i == 2{

item.isEnabled= false

continue}

item.selectedImage=UIImage(named: imageArr[i])

}

}

}

storyboard搭建项目_swift项目第五天:swift中storyBoard Reference搭建主界面相关推荐

  1. storyboard搭建项目_轻松搞定一人一个storyboard开发

    前言 storyboard已经推出有几年了,苹果也一直卖力的引导开发者使用storyboard开发,这点从我们创建工程,新工程以Main. storyboard创建window窗口就可以看出.然而很多 ...

  2. storyboard搭建项目_iOS应用开发中StoryBoard搭建UI界面的基本使用讲解

    StoryBoard 的本质StoryBoard 是苹果在 iOS 5 中引入的新技术方案,目的是给纷繁复杂的 nib.xib 们一个温暖的家,让他们之间的关系更直观地展示出来,并提供了一种新的页面间 ...

  3. storyboard搭建项目_简单谈谈ios程序界面实现的三种方式(代码创建,xib和storyboard)...

    一丶前言 实现ios界面总的来说,有三种方式,传统的是纯代码创建与xib创建,近年来,苹果官网一直推荐用storyboard管理项目界面,最新的xcode 创建的project也是默认为storybo ...

  4. storyboard搭建项目_Storyboard

    开始之前先了解一下storyBoard是什么 storyBoard是iOS5中引入的,在近几年的 Xcode 更新中可以看出,苹果对 Storyboard 的开发力度也不断增强,添加了更多功能和特性, ...

  5. storyboard搭建项目_Storyboard使用教程一

    Storyboard是最先在iOS 5引入的一项振奋人心的特性,大幅缩减构建App用户界面所需的时间. 要介绍Storyboard是什么,我打算从这张图讲起.下面是您将会在本教程中构建的Storybo ...

  6. 八十五、Eureka搭建分布式SpringCloud项目

    @Author:Runsen 来源:尚硅谷 下面建议读者学习尚硅谷的B站的SpringBoot视频,我是学雷丰阳视频入门的. 具体链接如下:B站尚硅谷SpringBoot教程 大家好,我是润森.期末化 ...

  7. MacOS 搭建一个vue项目(完整步骤)

    搭建一个Vue项目 一.安装node环境 二.搭建vue项目环境 1.全局安装vue-cli 2.检查是否安装成功 3.创建一个基于 webpack 模板的新项目 4.安装依赖 5.启动项目 三.vu ...

  8. 使用mac搭建vue脚手架项目

    1.  需要安装Node.js C:\Users\wheat> node -v v8.9.3 C:\users\wheat> npm -v 2. 安装vue 脚手架 用cnpm(使用国内镜 ...

  9. vue电商项目(一)——项目搭建

    目录 一.项目初始化 1.脚手架目录介绍 2.项目的其他配置 (1)项目运行的时候,让浏览器自动打开 (2)关闭语法检查工具 (3)src文件夹的简写形式,配置别名,方便以后访问. 二.项目路由搭建 ...

最新文章

  1. linux curl 命令 http请求、下载文件、ftp上传下载
  2. click group list in left launchpad
  3. 2018java基础面试题(我自己用的,面试好多家公司基本会问到的问题和技术)
  4. [Offer收割]编程练习赛48
  5. vs2010制作安装包-vs2010打包教程
  6. 数据结构实验:电话号码查询系统
  7. iOS11、iPhoneX、Xcode9 的注意点汇总
  8. 电脑端微信无法打开腾讯文档
  9. Qt:warning: control reaches end of non-void function
  10. flvplayer.swf flv视频播放器使用方法 (转载)
  11. 2022-2027年中国闪速存储器集成电路行业市场深度分析及发展战略规划报告
  12. 浏览器下载文件不全解决方法
  13. 运用Java获取当前时间
  14. 线性表的顺序存储结构——顺序表
  15. 前端工程师的摸鱼日常(14)
  16. 学习计算机基础的方法,计算机基础知识的有效学习方法
  17. JS自定义元素节点/属性的使用 createElement、setAttribute、getAttribute、appendChild
  18. 手机室内地磁定位软件_首款手机室内地磁定位导航系统问世 无需WIFI
  19. 05、人人都会设计模式:代理模式--Proxy
  20. IntentFilter功能简介

热门文章

  1. javascript中setInterval,setTimeout的区别跟用法
  2. HOWTO: InstallShield中如何实现MSI包的权限提升(转)
  3. 并发服务器设计思路,参考apache学习UDP和QoS,研究成果
  4. MS SQL入门基础:触发器概述
  5. 01-object类,常用API
  6. linux的基础知识——TCP握手
  7. 第一章 计算机系统概述 1.3 计算机的性能指标 [计算机组成原理笔记]
  8. 电路 第五版 第三章电阻电路的一般分析
  9. c语言中的标准数据类型,C语言中的基本数据类型
  10. 利用Inception-V3训练的权重微调,实现猫狗分类(基于keras)