当前位置: 首页 > article >正文

学习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的界面:


http://www.kler.cn/a/5237.html

相关文章:

  • 【C++】B2106 矩阵转置
  • 『SQLite』如何使用索引来查询数据?
  • ProtonBase 荣获 Datafun “数智技术最佳探索奖”
  • 智能工厂的设计软件 应用场景的一个例子: 为AI聊天工具添加一个知识系统 之24 重审 前端实现:主页页面
  • 刚体变换矩阵的逆
  • 基于SpringBoot的斯诺克球馆预约购票管理系统
  • C++特殊类设计
  • Go语言精修(尚硅谷笔记)第十六章
  • ChatGPT来了,让我们快速做个AI应用
  • 2023最新 淘宝短视频运营新思路!
  • 【学习笔记】计算机视觉与深度学习(4.卷积神经网络)
  • 数据结构——红黑树
  • 亚马逊流量密码-优化listing的跳出率
  • 2023年非业绩亏损ST股票投资策略研究报告
  • 《程序员面试金典(第6版)》面试题 08.04. 幂集(回溯算法,位运算,C++)不断更新
  • 王爽-汇编语言第二版学习-day1
  • 最强绘图AI:一文搞定Midjourney(附送咒语)
  • MybatisPlus简讲 -- 狂神说JAVA版
  • gpt2中文训练教程-gpt2文本生成
  • 传感器实验讲解1
  • HarmonyOS/OpenHarmony应用开发-HUAWEI DevEco Studio 3.1API9集成SDK
  • 项目一:挑战6秒
  • 你看这个spring的aop它又大又宽
  • Node.js学习笔记——HTTP协议
  • 电脑微博批量删除-2023怎么批量删除微博网页版代码
  • OPNET Modeler 例程——创建一个包交换网络