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

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])

}

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python for循环连续输入五个成绩判断等级_Python基础(1)——输入输出/循环/条件判断/基本数据类型...

一、编程语言 1、 编译型语言:先编译,再执行 (先编译成二进制) 举例:英文书翻译成中文再看 C、C、C# 2、解释型语言:一边执行一边编译 举例:英文书找个翻译,它翻译一行你听一行 php、…

笔记本计算机无法开机怎么办,笔记本开机没反应,教您笔记本电脑开不了机怎么处理...

笔记本电脑使用的时间长了,都是会出现一些小故障,大毛病什么的,比如说像开机后,电源指示灯亮,但是电脑的显示器屏就是没有反应。这个问题让用户慌了神,为此,那笔记本电脑开不了机怎么解决&#…

离群点检测方法_干货 :时间序列异常检测

异常检测(Anomaly detection)是目前时序数据分析最成熟的应用之一,定义是从正常的时间序列中识别不正常的事件或行为的过程。有效的异常检测被广泛用于现实世界的很多领域,例如量化交易,网络安全检测、自动驾驶汽车和大型工业设备的日常维护。以在轨航天器为例,由于航天器昂…

centos6安装mysql并远程连接_MySQL5.7数据库安装与远程连接

系统:Redhat Linux 7.7MySQL版本:5.71. MySQL下载o 登录网站:https://dev.mysql.com/downloads/mysql/o 选择合适版本与系统Select version:5.7.31Select operating system:Red Hat Enterprise LinuxSelect OS Version…

远程桌面连计算机名称变ipv6,利用ipv6,从家里远程连接到学校的电脑上

本文的前奏是http://forum.neubt.com/viewthread.php?tid336038不过那个帖子里的机器用的是某ghost版的Win7,然后用msdn版的发现不行,估计是有什么设置没设好,故问了百度,现收集整理结果如下1.服务端当然要安装ipv6协议&#xff…

python小代码_Python爬虫入门有意思的小长代码

一段有意思的代码,有兴趣的可以研究研究。 需求 用户收到短信如:购买了电影票或者火车票机票之类的事件。然后app读取短信,解析短信,获取时间地点,然后后台自动建立一个备忘录,在事件开始前1小时提醒用户。…

小学生 计算机编程 教程,面向小学生的C ++有趣编程(第一卷)配置教学资源课件完整版...

难度适中,易学易教的“面向小学生的C 趣味编程”教科书是小学信息学教学的重要组成部分.选择80多个接近小学生学习生活的例子,结合小学生的认知规律,激发孩子的兴趣,关注程序,适当削弱语法.使用流程图来阐明思想&#…

列举python中可变数据类型_python 可变数据类型 和 不可变数据类型

在 python 中,类型属于对象,变量是没有类型的:a[1,2,3]a"Runoob"以上代码中,[1,2,3] 是 List 类型,"Runoob" 是 String 类型,而变量 a 是没有类型,它仅仅是一个对象的引用(…

python怎么用for循环找出最大值_如何获取Python简单for循环索引

如何获取Python简单for循环索引 这篇文章主要介绍了如何获取Python简单for循环索引,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python的for循环相比其他语言而言更加简单,比如经常会有如下这样类…

2018年江苏省计算机小高考,江苏2018年小高考成绩查询系统网站入口:江苏省教育考试院...

【导语】无忧考网从江苏省教育考试院获悉,江苏2018年小高考成绩查询系统网站入口将于4月9日上午正式开通!江苏省教育考试院关于发布江苏省2018年普通高中学业水平测试必修科目考试成绩的通告江苏省2018年普通高中学业水平测试必修科目考试成绩拟定于4月9…

列注释_【EXCEL检查问题】:如何快速检查并删除EXCEL中隐藏的工作表、行、列等信息...

前注:本案例是以EXCEL2016为示范软件,各版本的部分功能和路径可能不同在EXCEL使用过程中,你是否遇到过某一列的公式怎么修改都报错的情况?你是否遇到过一个只有区区几行数据的表格,却占用了好几百KB甚至好几M的空间呢&…

python输入的字符串转换为对应的数字类型_Python合集之Python运算符(四)

在上一节的合集中,我们了解了Python运算符中的位运算符的相关知识,本节我们将进一步了解一下Python运算符中运算符的优先级级基础的输入输出语法的相关知识。1. 运算符优先级Python运算符的运算规则是:优先级高的运算先执行,优先级…

服务器选购seo优化规则,需要做SEO的网站,购买服务器请注意六点

企业为了能在市场中争抢到一席之地都在对网站做各种优化,期望通过互联网,在最大程度上提高知名度,吸引客户。企业搭建网站一般都会考虑网站上线之后的优化问题,而服务器对于网站SEO的优化有很大的影响。网站想要做好SEO优化&#…

python安装tensorflow报错_Anaconda安装tensorflow报错问题解决方法

最近脱离了googlecolab想使用本地的anaconda进行机器学习课题的演练,在安装tensorflow时报错 : UnsatisfiableError: The following specifications were found。下面给出解决方法。发现实际原因是由于anaconda的python环境,当前版本的tensorflow只能适用…

linux unix域socket_python3从零学习-5.8.1、socket—底层网络接口

源代码: Lib/socket.py这个模块提供了访问BSD*套接字*的接口。在所有现代Unix系统、Windows、macOS和其他一些平台上可用。这个Python接口是用Python的面向对象风格对Unix系统调用和套接字库接口的直译:函数 socket() 返回一个 套接字对象 ,其方法是对各…

hp服务器硬盘ultra320,HP服务器上安装和管理HP 磁盘柜MSA500G.pdf

HP服务器上安装和管理HP磁盘柜MSA500G23937207649(Redhat Linux AS3.0 字符环境)名目:一、磁盘柜硬件安装;二、驱动和工具软件安装;三、阵列配置;四、系统监控先给服务器安装操作系统Redhat Linux AS3.0。磁盘柜硬件安装默认的SCS…

freetype字体位图转距离场_那些火遍ins的字体小技巧,不看你就亏了

转载自版式设计很简单(ID:format_design)今天分享一个台湾设计师施博瀚的学习教程,看了以后,你会惊呼,原来这个是用AI做出来的?Ps.软件截图跟我们有所差别,以文字说明为主。www.instagram.com/bohanshih快速…

已知三角形三点坐标求角度_细心研磨椭圆焦点三角形,这肯定是最全的解释。...

点击上方蓝字关注我因为月考赶上运动会,继国庆之后,感觉又放了一个小长假。原本身体是很愿意的,可是,刚讲的解析几何突然被中断了,思想上还真是有点矛盾。因为,想了想两天后该讲些什么,脑中却一…

社会计算机比赛,哈尔滨工业大学社会计算与信息检索研究中心 – 理解语言,认知社会 » IR-Lab参加计算机学院“光熙杯”篮球赛...

IR-Lab参加计算机学院“光熙杯”篮球赛2014年04月18日迎首战师生一心,IR队旗开得胜 5月11日是“光熙杯”篮球赛的第二个比赛日,IR队迎来了小组赛的首场比赛,对阵空间计算队。比赛开始阶段,双方均略显紧张,然而随着比赛…

12v小型电机型号大全_电机型号参数大全

电动机型号是便于使用、设计、制造等部门进行业务联系和简化技术文件中产品名称、规格、型式等叙述而引用的一种代号。下面为大家介绍电动机型号含义等信息。一、电动机型号组成及含义由电机类型代号、电机特点代号、设计序号和励磁方式代号等四个小节顺序组成。1、类型代号是表…