献给初学iOS的小盆友们------微博app项目开发之一项目初始化

2023-10-27

献给初学iOS的小盆友们——微博app项目开发之一 项目初始化

本人自学iOS也有七八个月了,不敢说学到很深入了,但也算入了门。此次微博app项目参考了传智播客培训教材,主要学习内容有架构思想,封装思想,代码重构,业务逻辑等内容,项目涵盖面广泛,讲解易懂,且采用纯代码方式搭建UI,希望对那些没有时间看视频的初学者们有所帮助。相信学习完本套项目,初学者会在编程思想上有一个很大的提升。


内容

  • 项目素材获取
  • 环境配置
  • 自定义tabBarController
  • 修改tabBar内部结构
  • 划分结构

本节资料

第一节资料下载


1.1 项目素材获取

首先模仿一个项目,需要图片等素材,单凭自己是做不出来的。本项目提供了基本的图片素材供下载使用,一般项目素材的获取步骤如下:

  • 打开苹果电脑iTunes应用,选择顶部栏“AppStore”项
  • 然后在搜索框内输入“微博”并搜索
  • 找到微博并点击,进去后点击微博图标下的“取得”按钮
  • 输入 iCloud账户密码后即可下载
  • 左上角下载按钮可以显示下载进度
  • 点击顶部栏“我的iPhone应用按钮”
  • 找到微博应用,右键点击,选择“在Finder中显示”
  • 可以看到下载的是ipa类型的文件,使用解压文件解压后即可得到微博应用文件夹
  • 进入文件夹后,选择Payload下的Weibo.app文件,右键点击后选择“显示包内容”,即可看到微博应用所需的所有图片,以后项目模仿都会用得到

1.2 环境配置

开发任何一个大型的应用都需要提前对开发环境进行配置,本次微博项目对Xcode进行了能满足我们模仿要求的简单设置。配置过程也就是修改info.plist文件而已,点击“微博模拟”项目出现的设置页面就是info.plist的图形化界面。配置过程如下:

  • Bundle Identifier 设置
    Bundle Identifier 主要作用有app在上传app store时为了区分不同程序 时使用,开发推送功能时需要,在这里设置成YGWeibo.- - - - 。
  • Version 版本号
    以后迭代开发时,版本号必须比之前的大,在这里不需要设置
  • Development Target
    选择7.0以后的都可以
  • Devices
    选择iPhone
  • Main Interface
    此次项目采用纯代码创建,所以不需要加载storyboard,在这里设置为空,并且把左侧Main.Storyboard,ViewController.h,ViewController.m 文件删除。
  • Device orientation
    只选择portrait
  • Status Bar Style
    选择default后,勾选Hide Status Bar

这里讲一讲,怎么用纯代码得到跟加载main.storyboard有相同效果的界面。首先苹果应用程序的启动步骤是这样的,在一开启时,首先进入main函数,main 函数内主要执行三个步骤,首先创建UIApplication对象,然后创建AppDelegate对象,并且成为UIApplication对象的代理属性,然后开启主线程循环,最后加载info.plist文件,判断是否有main.storyboard,如果有,就会加载main.storyboard。因为我们这里才用纯代码开发,所以info.plist就没有main.storyboard文件了,需要在AppDelegate.m里的第一个代理方法中设置窗口,以及创建并加载视图控制器,代码如下,但是此代码非最终的tabBarVC的设置代码,以后会有修改此处只做演示用。此代码就相当于加载Storyboard的步骤。


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // 创建窗口
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

    // 为了展示效果 设置背景色为黄色
    self.window.backgroundColor = [UIColor yellowColor];

    // 创建tabBarViewController
    UITabBarController *tabBarVc = [[UITabBarController alloc] init]; 
    tabBarVc.view.backgroundColor = [UIColor redColor];

    // 管理子控制器
    // 首页
    UIViewController *home = [[UIViewController alloc] init];
    home.view.backgroundColor = [
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

献给初学iOS的小盆友们------微博app项目开发之一项目初始化 的相关文章

  • 苹果拒绝应用程序,因为它在未经用户许可的情况下传输 MAC 地址

    我们最近开发的一款应用程序被苹果拒绝了 这是他们的解释 我们发现您的应用在收集数据之前未征得用户同意 根据应用程序商店审查指南的要求 用户的个人数据 具体来说 您的应用程序会发送设备的 MAC 地址 而无需 用户的许可 您的应用程序还会发送
  • 如何将 NSString 转换为 NSArray [重复]

    这个问题在这里已经有答案了 我有一个像这样的字符串 NSString str 90 5 6 我需要将其转换为数组 例如 NSArray numbers 90 5 6 我做了很长一段路是这样的 NSArray stringToArray NS
  • 滑动删除时,TableView 的页眉和页脚部分也会滑动

    我的 TableView 有问题 添加节页脚后 我意识到当我滑动删除时它会移动 我创建了一个仅包含此功能的最小项目来显示我面临的问题 这是我得到的结果 我有两个 TableViewCell DetailCell import UIKit c
  • 使用桌面 Appium 应用程序在模拟器上打开并崩溃

    测试环境 用于运行 Appium 的桌面操作系统 版本 版本 1 2 0 beta 3 1 2 0 beta 3 Node js 版本 除非使用 Appium app exe 测试移动平台 版本 ios模拟器 iPhone 6s 10 2
  • 模拟器在 AQMEIOManager 上崩溃

    尝试播放音频时模拟器崩溃 13 22 14 211 App 2965 5603 lt 0xb03e7000 gt Error obj trying to fetch default input device s sample rate 13
  • 在 swift for iOS 中以编程方式设置图像的拉伸参数

    因此 如果我们只想拉伸图像的一部分 无论是常规图像还是背景图像 我们在布局编辑器中使用以下设置 您如何以编程方式设置这些 我正在使用 Xcode 7 2 1 指定图像的上限插图 您可以通过使用来设置拉伸细节UIImage method re
  • iOS 信号处理程序可以轻松收集哪些原因信息?

    我正在尝试向应用程序添加一些崩溃日志记录 并且我有一个signal设置处理程序以捕获标准 致命 信号 我可以在信号处理程序中实际 简单地收集哪些 原因 信息 如果有 以进行记录 我花了大约 2 小时谷歌搜索内容 但我找到的大部分内容都是针对
  • CoreData 多对多添加错误

    不确定我在这里做错了什么 School has a to many to Student and Student has its inverse 一点测试代码如下 class Student interface School NSManag
  • iOS 7 中强制横向 ViewController

    我有十多个处于纵向模式的 ViewController 但无论设备的方向如何 我都需要强制一个处于横向模式 这是解决方案 1 将 LandscapeViewController 嵌入到子类 NavigationController 中 并使
  • 如何获取 UITableView 中特定行的高度

    In my UITableView我使用委托方法为不同的行设置了不同的高度 tableView heightForRowAtIndexPath 现在给定一个NSIndexPath 我想获取之前为特定行指定的高度 你可以用这个 CGRect
  • 确定视口或“标准”浏览器的最佳方法

    所以 现在我们都知道 iOS 移动 Safari 使用视口 Android 浏览器也是如此 而不是 标准 浏览器窗口 这会导致问题overflow hidden and position fixed 不幸的是 iPad 的情况也是如此 我想
  • 自动订阅应用内购买:恢复后续续订

    根据 Apple 应用内购买编程指南 App Store 每次续订订阅时都会创建一个单独的交易 当您的应用程序恢复以前的购买时 Store Kit 会将每笔交易传送到您的应用程序 假设我的应用程序订阅仅限客户端 无服务器组件 验证后续续订是
  • 如何在iPhone应用程序中每天的特定时间调用一个方法?

    我想在我的 iPhone 应用程序中每天的特定时间调用一个方法 我怎样才能实现这个目标 使用 iPhone SDK 和封闭的应用程序并不能做很多事情 您可以让它在特定时间发送本地推送通知 但在用户手动打开您的应用程序之前不会执行您的代码 请
  • 无法从此设备复制符号使用 iOS 9.2.1 Xcode 是 7.2

    无法调整 private var folders 5 jhpy2pns35n0kljwt0l08q 40000gn T TemporaryItems Xcode 3 保存的文档 dyld shared cache armv7s 的大小 设备
  • 输入文本时 UITextField 的奇怪行为

    想要在以下位置搜索此问题Google但不知道我需要写什么才能找到确切的原因所以我在这里 ISSUE Create UITextField using Interface Builder并运行项目 当我使用输入任何值时iOS Keyboard
  • 如何在使用图像创建视频时添加图像变化动画

    我有一组图像 我想通过按顺序播放这些图像来创建视频 我想在图像发生变化时添加不同类型的动画 建议我一些方法或任何解决方案来通过 Cocoa 框架在 Objective C 中实现此功能 这是制作图像视频的工作代码 但请建议我们在制作视频时如
  • 如何使 Raspberry Pi 3 可被 iOS 和 CoreBluetooth 发现?

    我有一个 Raspberry Pi 3 我正在尝试使其可供 iOS 设备发现 我跑了sudo hciconfig hci0 piscan让它被发现 我可以用我的 iMac 看到它 在 iOS 上 我使用 CoreBluetooth 并扫描附
  • iOS 6 和 Xcode 5.0 的图标光泽度

    在使用 iOS6 和 XCode 5 时 我真的很困惑如何去除图标的光泽 我已经阅读了这些问题 去除 iOS 4 3 中图标的光泽效果 https stackoverflow com questions 8740387 removing g
  • 在SCNNode中添加CIFilter使节点变成白盒

    我想添加一个CIGaussianBlur to a SCNNode正在 ARKit 中显示 然而 添加该过滤器会将节点变成 白盒 这是没有和有过滤器的节点 No CIFilter With CIFilter 这是相关代码 let gauss
  • 如何从 AppDelegate.m 设置 tabBarItem 的徽章(tabBarView 不是根视图)[重复]

    这个问题在这里已经有答案了 我可以通过以下代码更改 AppDelegate m 中的徽章值 UITabBarController tabController UITabBarController self window rootViewCo

随机推荐

  • 【Nginx】解决在Nginx+Vue部署多个前端项目,二级目录不能访问、访问空白的问题

    一 前言 需求 设置访问 www ai com 访问时打开前端代码 tmp zhsf 设置访问 www ai com case search 时 访问时打开另一个前端代码 tmp template 二 实现过程 1 根目录访问 部署使用ng
  • uni-cloud云函数管理公共模块依赖

    1 右键函数文件夹 选中依赖模块 更新依赖 2 完成后
  • Keras中的fit函数训练集,验证集和测试集

    Keras中的fit函数训练集 验证集和测试集 1 Keras fit函数history对象包含两个重要属性 epoch 训练的轮数 history 它是一个字典 包含val loss val acc loss acc四个key 2 关于训
  • 第十三届蓝桥杯大赛软件赛省赛 Python 大学 C 组

    试题 A 排列字母 本题总分 5 分 问题描述 小蓝要把一个字符串中的字母按其在字母表中的顺序排列 例如 LANQIAO 排列后为 AAILNOQ 又如 GOODGOODSTUDYDAYDAYUP 排列后为 AADDDDDGGOOOOPST
  • 拥抱ChatGPT,开启结对咨询模式!

    ChatGPT刮起了一阵旋风 ChatGPT到底能做什么 做到什么程度 真的会让咨询顾问失业吗 带着这样的疑问 我费尽周折 注册了ChatGPT账号 我先从一个大众化的话题开启了与ChatGPT的对话 如何提高软件开发的质量 如果是我回答这
  • 网页文字复制的几种方法

    1 开启网页阅读模式 这种方法适用于Microsoft Edge浏览器中 它有网页阅读功能可以使用 在网址的最前面加上 read 就会进入网页阅读界面 然后选中文字就可以直接进行复制了 2 直接拖拽 一种简单直接的方法 不用进行任何其他操作
  • 如何在服务器上跑python程序

    购买服务器 首先你需要一个服务器 阿里云云翼计划有一个9 9云服务器ECS服务 你怎么买我不管 反正你最后给我搞到一个云服务器 购买的配置界面 由于阿里云现在限量购买 所以这里只是截个图说明而已 主要说明一点公共镜像选择ubuntu14 0
  • 【软件测试】理论知识基础第一章

    前言 骗取自己的救赎 直到和染尘斑驳的玫瑰一起坠入深渊 软件测试 理论知识基础第一章 一 认识软件测试 1 什么是软件测试 二 常见的测试分类 1 阶段划分 2 代码可见度划分 3 扩展 总结 三 模型 1 质量模型 2 W模型 四 软件测
  • Webservice接口的生成及调用

    最近项目上要对接一个Webservice形式的接口 因为以前一直没有对接过这种类型的 所以这次专门查了一些资料学习下 一 Webservice的简单介绍 WebService是一种跨编程语言和跨操作系统平台的远程调用技术 它通过标准通信协议
  • AAA协议tacacs认证简单实验

    实验名称 AAA的tacacs验证 实验目的 在AAA认证服务器上认证客户端telnet登陆路由器 实验拓扑图 主要实验步骤 Router上的配置 Router gt en Router conf t Router config inter
  • 内存超频时序怎么调_超频技术之内存“时序”重要参数设置解说

    超频技术之内存 时序 重要参数设置解说 来源 华强电子网 作者 华仔 浏览 432 时间 2017 05 10 21 48 标签 摘要 相信大多数超频帖子里都会提到内存时序调整 也就是我们经常看到的5 5 5 15 1T 4 5 4 12
  • python爬虫requests源码链家_Python 爬虫 链家二手房(自行输入城市爬取)

    因同事想在沈阳买房 对比分析沈阳各区的房价 让我帮忙爬取一下链家网相关数据 然后打 算记下笔记 用于总结学到的东西 用到的东西 一 爬虫需要会什么 学习东西 首先你要知道它是干嘛的 爬虫 顾名思义就是爬取你所看到的网页内容 小说 新闻 信息
  • 当可变形注意力机制引入Vision Transformer

    GiantPandaCV导语 通过在Transformer基础上引入Deformable CNN中的可变性能力 在降低模型参数量的同时提升获取大感受野的能力 文内附代码解读 引言 Transformer由于其更大的感受野能够让其拥有更强的模
  • 你的键盘多久没测试过了?看看有没有失灵

    键盘是电脑外置设备中易损坏的一种 也是必不可少的电脑配件 特别是程序员每天都需要频繁地使用键盘 键盘常会出现故障 例如失灵或某些字母 数字无法正常输入 这样既浪费时间又令人烦恼 为此 我们在这里提供一个在线测试工具 方便您测试键盘按键是否正
  • 疫情期间科研记录(1)——异步电机矢量控制

    2020年二月至三月 受疫情影响 居家隔离 受毕业以及找工作压力 居家而未敢忘科研 两个月成果如下 在此期间 参考大量文献和往上的代码 基本完善了开题时硕士毕业论文的电机控制系统概念 实现了基于概念的仿真模型 记此文档以备忘 异步电机矢量控
  • 【ARIMA-WOA-LSTM】合差分自回归移动平均方法-鲸鱼优化-长短期记忆神经网络研究(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 1 1 ARIMA模型 1 2 鲸鱼优化算法 1 3 LSTM 模型 2 运行结果 3 参考文献 4 Py
  • js数组对象取出指定元素相同的对象组成新数组

    要处理的数组 name 小明 age 18 address 天上 name 小红 age 19 address 地里 name 小明 age 20 address 叙利亚 name 小明 age 5 address 娘胎 想处理成 name
  • C++编译知识笔记(二)——Linux ELF文件解析

    目录 一 ELF格式概述 二 常见段及对应用途 三 目标文件内容解析 3 1 代码段 text 3 2 只读数据段 rodata 3 3 数据段 data 3 4 bss段 3 5 重定位表 Reloacation Table 相关段 re
  • Flink简单教学4-编程模型

    编程模型 此章编程模型是重点 理解Flink是如何工作的 虽然不涉及代码但非常有必要花时间阅读 2 4 节为重点 1 层次抽象 Levels of Abstraction 从底向上 抽象程都由低到高 以下说明了解以下即可 最低层次的抽象仅仅
  • 献给初学iOS的小盆友们------微博app项目开发之一项目初始化

    献给初学iOS的小盆友们 微博app项目开发之一 项目初始化 本人自学iOS也有七八个月了 不敢说学到很深入了 但也算入了门 此次微博app项目参考了传智播客培训教材 主要学习内容有架构思想 封装思想 代码重构 业务逻辑等内容 项目涵盖面广