【一】Swift 3.0 新浪微博项目实战 -整体框架搭建
最近要接手swift项目,所以找了个视频跟着做一下实战项目,在此记录一下过程和心得
第一天的 源码点这里
框架搭建和目录拆分
关键词:MVVM 架构,桥接文件
桥接文件
用于引入OC的头文件,Swift就可以正常使用(宏除外)。项目内桥接文件( weibo-Bridge.h)
设置Tabbar样式 ,通过字典添加子控制器
关键词:guard let ,lazy 懒加载, extension,溢出TabbarItem的处理,@objc private
- guard let
在读取字典属性的时候,避免空值
相对于if let的使用,避免过多的嵌套,写法更加简洁方便
比较多的像新浪微博这种,底部Tabbar都会有一个比较独特的按钮。有些APP底部按钮有溢出底部栏的情况。 这个时候设置多一个tabbarItem,用一个按钮覆盖多出来的item, 达到效果。 在有超过底部栏的情况可以设置tabbar.bounds.insets 来解决
注意一个像素点的按钮容错@objc
看到objc应该能发现这是和oc有关
一般在添加按钮的点击方法的时候都是设置 private 保证方法私有,但是直接用private编译不通过
通过@objc,允许这个函数在运行时通过OC的消息机制被调用, 所有及时被私有了,在运行时依然能调用到- extension
类似OC中的分类
重写push方法,隐藏底部tabBar
关键词: override , super ,栈底控制器
- 重写 BaseVC的push方法。 判断值为子控制器个数
抽取barButtonItem 便利构造函数
关键词: convenience 便利构造函数 , as?
- as?vc.type 用来判断是否某种类型
自定义navBar
关键词: didset
- didset 重写属性的set方法
- 系统导航条在pop的时候有融合的情况,需要移除,自定义navBar.添加字体高亮,自定义返回样式
最后
find . -name "*.swift" | xargs wc -l
可以看到今天做的swift的文件 和代码行数
【一】Swift 3.0 新浪微博项目实战 -整体框架搭建的更多相关文章
- 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...
原文:手把手0基础项目实战(一)--教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)... 本文你将学到什么? 本文将以原理+实战的方式,首先对& ...
- 项目的整体框架,以及Topology的设计
一:说明 1.项目的整体框架 2.Topology的设计 3.记录 0. 89.201.10.122 - - [1528033390201] "GET /edit.php HTTP/1.1& ...
- OpenDaylight开发hello-world项目之代码框架搭建
OpenDaylight开发hello-world项目之开发环境搭建 OpenDaylight开发hello-world项目之开发工具安装 OpenDaylight开发hello-world项目之代码 ...
- ASP.NET Core 2.0 MVC项目实战
一.前言 毕业后入职现在的公司快有一个月了,公司主要的产品用的是C/S架构,再加上自己现在还在学习维护很老的delphi项目,还是有很多不情愿的.之前实习时主要是做.NET的B/S架构的项目,主要还是 ...
- node项目实战-用node-koa2-mysql-bootstrap搭建一个前端论坛
前言 在学习了koa2和express并写了一些demo后,打算自己写一个项目练练手,由于是在校生,没什么好的项目做,即以开发一个前端论坛为目标,功能需求参照一下一些社区拟定,主要有: 登录注册 个人 ...
- Spring Security OAuth2.0认证授权一:框架搭建和认证测试
一.OAuth2.0介绍 OAuth(开放授权)是一个开放标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不 需要将用户名和密码提供给第三方应用或分享他们数据的所有内容. 1.s ...
- Android Studio 1.0.2项目实战——从一个APP的开发过程认识Android Studio
Android Studio 1.0.1刚刚发布不久,谷歌紧接着发布了Android Studio 1.0.2版本,和1.0.0一样,是一个Bug修复版本.在上一篇Android Studio 1.0 ...
- 项目实战 Prometheus环境搭建
项目摘要: 本文是搭建一套prometheus环境的教程. 前期准备:准备三台虚拟机,本文以centos7为例. 项目具体实施:分别进入每台虚拟机设置hostname:# hostnamectl se ...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-2.快速搭建SpringBoot项目,采用IDEA
笔记 2.快速搭建SpringBoot项目,采用IDEA 简介:使用SpringBoot start在线生成项目基本框架并导入到IDEA中 参考资料: IDEA使用文档 ...
随机推荐
- python爆破定长密码脚本
def get_pwd(str, num):#str为可选字符集,num为密码长度 if(num == 1): for x in str: yield x else: for x in str: fo ...
- UE4中的集合:TSet容器
好久没有更新了,最近一直在老家过年,网络不通的,今天才有时间更新一集. 一.TSet<T>是什么 UE4中,除了TArray动态数组外,还提供了各种各样的模板容器.这一节,我们就介绍集合容 ...
- WEB前端性能优化之二——css优化
1.把样式表置于顶部 现把样式表放到文档的< head />内部似乎会加快页面的下载速度.这是因为把样式表放到< head />内会使页面有步骤的加载显示.HTML规范清 楚指 ...
- 前端开发面试题总结之——JAVASCRIPT(一)
___________________________________________________________________________________ 相关知识点 数据类型.运算.对象 ...
- 杭电2000——ASCII码排序
/* ASCII码排序 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- OC中extern,static,const的用法
1.const的作用: const仅仅用来修饰右边的变量(基本数据变量p,指针变量*p). 例如 NSString *const SIAlertViewWillDismissNotification; ...
- liunx常用命令
查看系统信息常用命令 uname -m /arch 显示机器的处理架构 uname -r 显示正在使用的内核版本 cat/proc/cpuinfo 显 ...
- Asp.net mvc 知多少(九)
本系列主要翻译自<ASP.NET MVC Interview Questions and Answers >- By Shailendra Chauhan,想看英文原版的可访问http:/ ...
- ABP学习笔记
1. 用 Nhibernate:CountAsync 是定义在System.Data.Entity里的 var totalCount = await query.CountAsync(); 出现以 ...
- struts2.5新配置动态调用
开启动态调用: <constant name="struts.enable.DynamicMethodInvocation" value="true"/& ...