学习HM微博项目第1天
步骤:搭建基本环境 -> 展示子控制器 -> 项目分层 -> 增加导航功能 -> 增加导航栏按钮。
搭建基本环境
该项目使用代码搭建UI界面,所以在HMAppDelegate的didFinishLaunchingWithOptions方法中要创建窗口window并设置窗口的根控制器,如下:
删除storyboard后要记得:
隐藏项目启动图的状态栏:
APP的界面:
展示子控制器
新建一个HMTabBarViewController类,在viewDidLoad方法中添加子控制器:
将添加子控制器的代码抽取为方法addOneChirdVc:
注:在iOS7中,会对selectedImage的图片进行再次渲染为蓝色,所以要显示原图,就必须得告诉他:不要渲染。
有时候,Image在不同版本的iOS中会提供不同的图片,他们的名称会有所不同,这时可对UIImage进行扩展:
APP的界面:
项目分层
HM微博项目按照的是功能模块对项目分层,并在每个模块里单独使用MVC模式,分层图如下:
增加导航功能(添加导航控制器)
tabBar控制器的子控制器必须包装在导航控制器中,才能实现push等操作,如下:
在4个子控制器(继承于UITableViewController)中分别实现数据源方法:
HMHomeViewController.h,
HMMessageViewController.h,
HMDiscoverViewController.h,
HMProfileViewController.h,
如下:
在HMTabBarViewController类中,修改addOneChirdVc方法,设置导航栏和tabBar栏上的title,如下:
APP的界面:
增加导航栏按钮
在HMHomeViewController.h中,重写viewDidLoad方法,设置导航栏按钮,如下:
设置导航栏按钮在整个项目多处会用到,所以对其进行封装,
扩展UIBarButtonItem类,如下:
除了最先push进来的几个控制器外,要在所有push进来的子控制器设置导航栏按钮,可以在HMNavigationController类的pushViewController方法进行设置,如下:
除了扩展UIBarButtonItem类设置导航栏按钮,还有另外一种做法,自定义按钮,如下:
这里的leftBtn.size的size用到了UIView类的扩展。
在HMMessageViewController.h中,重写viewDidLoad方法,设置导航栏按钮,如下:
在HMNavigationController类中,重写类方法initialize,通过appearance对象修改整个项目中所有“UIBarButtonItem”的样式,如下:
注:这里的UITextAttriTextColor、UITextAttriTextFont属性在iOS7.0之后已经不建议使用。
APP的界面:
学习HM微博项目第1天相关推荐
- 学习HM微博项目第10天
步骤:发微博12-表情键盘06-点击表情 -> 发微博13-表情键盘07-插入表情和封装textView -> 发微博14-表情键盘08-长按表情 -> 发微博15-表情键盘09-最 ...
- 学习HM微博项目第2天
步骤:导航栏主题 -> 添加搜索框 -> 易混淆的属性 -> 自定义搜索框 -> 标题按钮 -> 弹出下拉菜单 -> 封装下拉菜单 导航栏主题 在HMNavigat ...
- 学习HM微博项目第9天
步骤:发微博07-表情键盘01-切换键盘 -> 发微博08-表情键盘02-表情工具条 -> 发微博09-表情键盘03-加载表情数据和切换表情按钮 -> 发微博10-表情键盘04-表情 ...
- 学习HM微博项目第8天
步骤:发微博01-导航栏内容 -> 发微博02-自定义TextView -> 发微博03-完善TextView和发送微博按钮 -> 发微博04-显示工具条 -> 发微博05-封 ...
- 学习HM微博项目第7天
步骤:首页14-时间 -> 首页15-来源 -> 首页16-配图相册 -> 首页17-头像 首页14-时间 通过新浪官方的APP可知,在微博发送时间上是这么分类的: /**1.今年1 ...
- 学习Coding-iOS开源项目日志(二)
继续前篇:<学习Coding-iOS开源项目日志(一)>,接着本第二篇<学习Coding-iOS开源项目日志(二)>讲解Coding-iOS开源项目. 前言:作为初级程序员,想 ...
- 后盾vip php框架,后盾网实战VIP教程之ThinkPHP微博项目系列培训
php教程 当前位置:主页 > php教程 > 后盾网实战VIP教程之ThinkPHP微博项目系列培训 后盾网实战VIP教程之ThinkPHP微博项目系列培训 教程大小:1.56GB ...
- 如何用 Python 进行基于深度学习的计算机视觉项目开发?
令人惊喜的"智能"年代 深度学习有着广阔的前景 我们正处在一个"智能"的年代,比如智能手机中的语音助手.机器翻译和人脸识别:战胜过日本将棋冠军.国际象棋冠军, ...
- No module named MNIST_写给小白的用fashion-mnist入门机器学习和深度学习的简单项目(非常全面!!!)...
这是一个入门机器学习和深度学习的小项目,以fashion-mnist数据为基础.分别利用机器学习(随机森林)和深度学习(多层感知机/卷积神经网络)方法进行训练.完整的包含数据读取,数据处理,训练, 验 ...
最新文章
- 沈阳初步建成国内领先的城市级大数据资源库
- 阿里程序员转行公务员,工资少了40万,只留一句话惊醒众人
- JavaScript 基础 数据类型与运算符
- Spring Cloud微服务之子模块的创建(二)
- 手机游戏资源 特效 显存分析工具
- 我的世界服务器启动端怎么制作教程,我的世界怎样制作和运行服务器 详细制作教程一览...
- 常州工学院计算机网络考试题库,用Winsock实现在线考试
- php buildconf,PHP Extension开发 Unix Build System配置 conf
- 为什么网易云音乐总能知道你喜欢听什么歌?背后的原理竟然如此简单!
- Assembler如何把跳转汇编变成机器码的(一)
- Java poi 生成PPT并插入Excel附件并以图片形式显示代-代码例子
- 利用Python脚本来使用Google自动翻译Excel表格文件
- 为啥将phpstudy打开,却访问不了rips
- Error instantiating servlet class 的解决办法
- ACP——ECS题库
- 团队协作与团队内部竞争_从个人团队到竞争组织
- C语言编程>第十八周 ⑧ 给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。
- Java工程师学习指南(入门篇)
- 超级计算机开采金矿,地球内部有4亿亿吨黄金,人均550万吨,为何无人敢开采?...
- 微信玩转开发板-微信控制智能家居简易模型
热门文章
- javascript模块化的前世今生
- .Net报表工具ActiveReports在线设计器教程 - 如何调用自定义字体
- React性能优化SCU | PureComponent | memo
- 怎么把Excel转换成PDF格式?这三种方法轻松完成转换
- 社会实践活动报告—06暑假饭店打工
- ABP+AdminLTE+Bootstrap Table权限管理系统第五节--WBEAPI及SwaggerUI
- Android-生成二维码工具类
- Vue【定制化】~ 基础知识
- OA附件不能直接打开PDF文件
- Nachos5.0 java版本前三个proj设计报告