编程进阶网编程进阶网
  • 基础组成体系
  • 程序编程原理
  • 异常和IO系统
  • 六大设计原则
  • 设计模式导读
  • 创建型设计模式
  • 结构型设计模式
  • 行为型设计模式
  • 设计模式案例
  • 面向对象思想
  • 基础入门
  • 高级进阶
  • JVM虚拟机
  • 数据集合
  • Java面试题
  • C语言入门
  • C综合案例
  • C标准库
  • C语言专栏
  • C++入门
  • C++综合案例
  • C++专栏
  • HTML
  • CSS
  • JavaScript
  • 前端专栏
  • Swift
  • iOS入门
  • 基础入门
  • 开源库解读
  • 性能优化
  • Framework
  • 方案设计
  • 媒体音视频
  • 硬件开发
  • Groovy
  • 常用工具
  • 大厂面试题
  • 综合案例
  • 网络底层
  • Https
  • 网络请求
  • 故障排查
  • 专栏
  • 数组
  • 链表
  • 栈
  • 队列
  • 树
  • 递归
  • 哈希
  • 排序
  • 查找
  • 字符串
  • 其他
  • Bash脚本
  • Linux入门
  • 嵌入式开发
  • 代码规范
  • Markdown
  • 开发理论
  • 开发工具
  • Git管理
  • 百宝箱
  • 开源协议
  • 技术招聘
  • 测试经验
  • 职场提升
  • 技术模版
  • 关于我
  • 目标清单
  • 学习框架
  • 育儿经验
  • 我的专栏
  • 底层能力
  • 读书心得
  • 随笔笔记
  • 职场思考
  • 中华历史
  • 经济学故事
  • 基础组成体系
  • 程序编程原理
  • 异常和IO系统
  • 六大设计原则
  • 设计模式导读
  • 创建型设计模式
  • 结构型设计模式
  • 行为型设计模式
  • 设计模式案例
  • 面向对象思想
  • 基础入门
  • 高级进阶
  • JVM虚拟机
  • 数据集合
  • Java面试题
  • C语言入门
  • C综合案例
  • C标准库
  • C语言专栏
  • C++入门
  • C++综合案例
  • C++专栏
  • HTML
  • CSS
  • JavaScript
  • 前端专栏
  • Swift
  • iOS入门
  • 基础入门
  • 开源库解读
  • 性能优化
  • Framework
  • 方案设计
  • 媒体音视频
  • 硬件开发
  • Groovy
  • 常用工具
  • 大厂面试题
  • 综合案例
  • 网络底层
  • Https
  • 网络请求
  • 故障排查
  • 专栏
  • 数组
  • 链表
  • 栈
  • 队列
  • 树
  • 递归
  • 哈希
  • 排序
  • 查找
  • 字符串
  • 其他
  • Bash脚本
  • Linux入门
  • 嵌入式开发
  • 代码规范
  • Markdown
  • 开发理论
  • 开发工具
  • Git管理
  • 百宝箱
  • 开源协议
  • 技术招聘
  • 测试经验
  • 职场提升
  • 技术模版
  • 关于我
  • 目标清单
  • 学习框架
  • 育儿经验
  • 我的专栏
  • 底层能力
  • 读书心得
  • 随笔笔记
  • 职场思考
  • 中华历史
  • 经济学故事
  • 01.UIKit框架学习
  • 02.UIViewController
  • 03.iOS工程面板说明
  • 04.基础控件Swift版
  • 05.手势的处理逻辑
  • 06.通信设计和实践
  • 07.Swift数据的存储
  • 09.Swift版网络请求
  • 10.Swift版数据存储
  • 11.Swift版多媒体实践
  • 12.Swift与ObjC互调
  • 13.Swift多线程开发
  • 14.Swift版SnapKit布局
  • 16.开发SDK实践
  • 17.iOS项目经验积累
  • 18.Swift版grpc请求

03.iOS工程面板说明

目录介绍

  • 01.Main.storyboard
    • 1.1 故事版的作用
    • 1.2 故事版使用步骤
    • 1.3 能否去掉故事版
  • 02.SceneDelegate
    • 2.1 SceneDelegate是什么
    • 2.2 SceneDelegate职责
    • 2.3 SceneDelegate注意点
    • 2.4 删除SceneDelegate
  • 03.LaunchScreen
    • 3.1 LaunchScreen是什么
  • 04.AppDelegate
    • 4.1 AppDelegate是什么
    • 4.2 AppDelegate职责
    • 4.3 AppDelegate生命周期
    • 4.4 设置默认启动页面
  • 05.Pod包管理器实践
    • 5.1 Pod组件库管理
    • 5.2 安装Pod管理器
    • 5.3 创建Podfile文件
    • 5.4 安装依赖包
  • 06.info.list属性
    • 6.1 清单文件作用
    • 6.2 常见的属性介绍

01.Main.storyboard

1.1 故事版的作用

在iOS开发中,Main.storyboard是一个可视化界面编辑器,用于创建应用程序的用户界面。它是Xcode中的一个文件,用于设计和布局应用程序的视图层次结构。

如果你不进行代码控制,默认APP启动会加载main.storyboard这个界面。

1.2 故事版使用步骤

以下是使用Main.storyboard的一般步骤:

  1. 在项目导航器中,找到并打开名为Main.storyboard的文件。通常,它位于项目的根目录下。
  2. 在Main.storyboard中,您可以看到一个可视化的界面编辑器,以及一个对象库(Object Library)和属性检查器(Attributes Inspector)。
  3. 使用对象库中的控件(如按钮、标签、文本框等)拖放到界面编辑器中,以创建和布局您的用户界面。您可以调整控件的大小、位置和外观,以满足您的需求。
  4. 使用属性检查器来设置控件的属性,例如文本、颜色、字体、约束等。您可以通过选中控件并在属性检查器中进行更改来修改属性。
  5. 使用界面编辑器中的连接线(connections)和拖放手势(drag and drop gestures)来创建控件之间的交互和导航。
  6. 在界面编辑器中,您还可以创建和管理视图控制器(View Controller),并定义它们之间的导航关系。
  7. 在Main.storyboard中,您可以使用多个视图控制器来构建应用程序的不同屏幕和场景。您可以通过导航控制器(Navigation Controller)或标签栏控制器(Tab Bar Controller)等容器视图控制器来管理多个视图控制器之间的导航和切换。
  8. 在开发过程中,您可以通过在界面编辑器中进行实时预览来查看和测试您的用户界面。

Main.storyboard是一个重要的工具,用于设计和构建iOS应用程序的用户界面。它提供了一个直观的界面编辑器,使您能够以可视化方式创建和布局界面元素,并定义它们之间的交互和导航。

1.3 能否去掉故事版

需要修改这三处:1.删除main.storyboard这个文件,2.将Main Interface改为空,3.删掉info表中的"Main storyboard file base name”。

ios原生入门之storyboard页面绘制:https://blog.csdn.net/liuxingyuzaixian/article/details/129990516

具体可以看:

  1. Xcode新建Objective-C项目,SceneDelegate下不使用Main.StoryBoard注意事项:https://zhuanlan.zhihu.com/p/11359793784
  2. xcode11-删除main.storyboard之后黑屏:https://www.jianshu.com/p/8baaad73154f
  3. Storyboard 放入 根视图控制器:https://blog.csdn.net/ni_hao_wang/article/details/45336735

02.SceneDelegate

2.1 SceneDelegate是什么

在iOS 13及更高版本中,引入了SceneDelegate作为应用程序的生命周期管理和多窗口支持的一部分。

SceneDelegate是一个代理对象,负责管理应用程序的场景(Scene)和与之相关的窗口(Window)。

2.2 SceneDelegate职责

SceneDelegate的一些主要职责和用法:

  1. 管理应用程序的场景:SceneDelegate负责创建、配置和销毁应用程序的场景。每个场景都代表了应用程序的一个独立实例,可以在多个窗口中同时运行。
  2. 管理窗口:SceneDelegate负责创建和管理与场景相关的窗口。您可以在SceneDelegate中设置窗口的根视图控制器(Root View Controller)和其他属性。
  3. 响应场景生命周期事件:SceneDelegate提供了一组方法,用于响应场景的生命周期事件,例如场景的创建、活动状态的变化、进入后台等。您可以在这些方法中执行相应的操作,例如更新界面、保存数据等。
  4. 支持多窗口:通过SceneDelegate,您可以为应用程序启用多窗口支持。每个场景都可以拥有自己的窗口,并且可以在不同的窗口中显示不同的内容。

2.3 SceneDelegate注意点

SceneDelegate是在iOS13的时候新增的,老项目的迭代更新的时候很少接触这个文件。

当AppDelegate和SceneDelegate两个文件共存的时候,不仅仅要关注AppDelegate中的回调函数,还要关注SceneDelegate代理的回调函数,因为在不同的iOS系统下走的文件回调是不一样的。

在iOS13之前通通走AppDelegate,iOS13之后就会走SceneDelegate。

2.4 删除SceneDelegate

不习惯使用 SceneDelegate 可以将其删除,步骤如下

  1. A. 首先删除 SceneDelegate文件:.h 和 .m
  2. B. 删除 AppDelegate文件 中新增的两个函数:application(:configurationForConnecting:options:) 和 application(:didDiscardSceneSessions:)
  3. C. 删除 Info.plist文件 中的 Application Scene Manifest
  4. D. 在 AppDelegate.h 中添加 window属性:@property (strong, nonatomic) UIWindow *window;

03.LaunchScreen

3.1 LaunchScreen是什么

Launch Screen是一个用于显示应用程序启动画面的界面。它是一个静态的界面,用于在应用程序启动期间显示,给用户一个初始的视觉反馈。

Launch Screen只是应用程序启动过程中的一个静态界面,它不应该包含复杂的逻辑或交互。一旦应用程序加载完成,Launch Screen将会被应用程序的主界面所取代。

Launch Screen的作用:Launch Screen用于在应用程序启动时显示一个静态的界面,以填补应用程序加载和初始化的时间间隙。它可以提供一个品牌标识、应用程序的名称或其他相关信息,给用户一个启动过程中的视觉反馈。

Launch Screen的设计:Launch Screen通常是一个简单的界面,不包含复杂的交互或动画。它应该尽可能地快速加载和显示,以便在应用程序启动期间提供一个无缝的体验。

04.AppDelegate

4.1 AppDelegate是什么

AppDelegate是一个重要的类,用于管理应用程序的生命周期和处理系统级别的事件。它是应用程序的代理对象,负责处理应用程序的启动、进入后台、进入前台等事件。

简单来说,AppDelegate是应用程序与系统之间的桥梁,负责处理应用程序的生命周期事件、系统事件以及应用程序内部的一些重要事务。

4.2 AppDelegate职责

以下是AppDelegate的一些主要职责和用法:

  1. 应用程序的入口点:AppDelegate是应用程序的入口点,它在应用程序启动时被系统自动创建和实例化。您可以在AppDelegate中执行一些初始化操作,例如设置应用程序的初始界面、配置应用程序的全局设置等。
  2. 应用程序的生命周期管理:AppDelegate提供了一组方法,用于响应应用程序的生命周期事件。例如,当应用程序启动、进入后台、进入前台、即将终止等时,AppDelegate会调用相应的方法,您可以在这些方法中执行相应的操作,例如保存数据、更新界面等。
  3. 处理系统级别的事件:除了应用程序的生命周期事件,AppDelegate还可以处理一些系统级别的事件,例如接收远程通知、处理URL Scheme、处理应用程序间的数据共享等。您可以在AppDelegate中实现相应的方法来处理这些事件。
  4. 窗口和根视图控制器的管理:AppDelegate负责创建和管理应用程序的窗口(Window)和根视图控制器(Root View Controller)。您可以在AppDelegate中设置窗口的根视图控制器,并在需要时进行切换和管理。
  5. 全局状态的管理:由于AppDelegate是应用程序的代理对象,它可以访问和管理应用程序的全局状态。您可以在AppDelegate中定义全局变量或属性,以便在整个应用程序中共享和访问。

4.3 AppDelegate生命周期

AppDelegate的生命周期与应用程序的生命周期紧密相连。以下是AppDelegate生命周期的主要阶段及其对应的方法:

1.应用程序启动阶段

  1. application(:willFinishLaunchingWithOptions:): 这个方法在应用程序开始初始化但状态恢复尚未发生时调用。虽然它提供了执行初始化代码的机会,但通常不会在这里进行过多的操作,因为紧接着就会调用application(:didFinishLaunchingWithOptions:)方法。
  2. application(_:didFinishLaunchingWithOptions:): 这个方法在应用程序完成初始化并准备启动时调用。这是进行初始化操作(如设置根视图控制器、注册远程通知等)的主要地方。

2.应用程序活跃阶段

  1. applicationDidBecomeActive(_😃:这个方法在应用程序进入前台并变为活跃状态时调用。这是执行启动后操作(如恢复网络请求、开始动画等)的好地方。

3.应用程序不活跃阶段

  1. applicationWillResignActive(_😃:这个方法在应用程序将要失去活动状态时调用。例如,当用户按下Home键将应用程序切换到后台时,或者收到来电/短信等中断时。在这个阶段,可以进行一些准备工作,如保存数据、暂停音视频播放等。

4.应用程序后台阶段

  1. applicationDidEnterBackground(_😃:这个方法在应用程序进入后台时调用。在这个阶段,可以进行一些清理工作,如释放资源、停止网络请求等。

5.应用程序重新进入前台阶段

  1. applicationWillEnterForeground(_😃:这个方法在应用程序将要进入前台时调用。在这个阶段,可以进行一些准备工作,如恢复界面状态、重新加载数据等。

6.应用程序终止阶段

  1. applicationWillTerminate(😃:在iOS中,应用程序通常不会被系统直接终止,而是会被挂起(suspended)以节省资源。然而,在某些情况下(如用户手动终止应用程序、系统内存不足等),应用程序可能会被终止。当应用程序将要被终止时,会调用applicationWillTerminate(:)方法

4.4 设置默认启动页面

方法1: 打开AppDelegate.swift文件。在didFinishLaunchingWithOptions方法中,找到以下代码:

window = UIWindow(frame: UIScreen.main.bounds)
let rootVC = YourViewController()
let navrootVC = UINavigationController(rootViewController: rootVC)
window?.rootViewController = navrootVC
window?.makeKeyAndVisible()

方法2: 用storyboard在AppDelegate.swift里面跳转控制器的代码

@icelovery func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let viewController = storyboard.instantiateViewControllerWithIdentifier("storybord名字")
    self.window?.rootViewController = viewController
    self.window?.makeKeyAndVisible()
    return true
}

注意,如果您使用了Main.storyboard作为应用程序的主要界面,您需要确保在Info.plist文件中正确设置了Main storyboard file base name键。

05.Pod包管理器实践

5.1 Pod组件库管理

CocoaPods 是 iOS 开发中常用的第三方库(组件)管理工具。允许添加依赖方便管理依赖。

5.2 安装Pod管理器

首先要安装Pods

sudo gem install cocoapods
$ pod --version
1.16.2

网上看了很多教程,如果安装失败,一般是访问梯子的问题。可以参考这篇博客:https://blog.csdn.net/weixin_38716347/article/details/116845164

5.3 创建Podfile文件

创建Podfile文件文件

pod init

可以手动创建下面的文件

platform :ios, '11.0'
use_frameworks!

target 'YourApp' do
  # 添加依赖项
  pod 'Alamofire', '~> 5.0'
  pod 'SwiftyJSON', '~> 5.0'
end

5.4 安装依赖包

当你想要的依赖在podfile中编写好了之后安装依赖

pod install

然后打开项目的.xcworkspace文件

使用项目的 .xcworkspace 文件而不是 .xcodeproj 文件来打开 Xcode。这是因为 CocoaPods 会为项目生成一个独立的工作空间,其中包含了原始项目和依赖项。

06.info.list属性

6.1 清单文件作用

清单文件是指应用程序的信息属性列表文件(Info.plist)。它是一个XML格式的文件,用于存储应用程序的配置和元数据信息。

清单文件包含了应用程序的各种设置,例如应用程序的名称、版本号、图标、权限要求、支持的设备等。

清单文件是iOS应用程序的重要组成部分,它定义了应用程序的行为和配置。通过编辑清单文件,可以设置应用程序的各种属性和权限要求。

6.2 常见的属性介绍

以下是一些常见的清单文件中的属性和其含义:

  • CFBundleDisplayName:应用程序的显示名称。
  • CFBundleIdentifier:应用程序的唯一标识符。
  • CFBundleShortVersionString:应用程序的版本号。
  • CFBundleVersion:应用程序的构建版本号。
  • CFBundleIconFiles:应用程序的图标文件名列表。
  • UIRequiredDeviceCapabilities:应用程序所需的设备功能列表。
  • UIStatusBarHidden:控制状态栏的可见性。
  • NSCameraUsageDescription:请求访问相机的权限时显示的提示信息。
  • NSLocationWhenInUseUsageDescription:请求在使用期间访问位置的权限时显示的提示信息。

https://www.cnblogs.com/haibosoft/p/4177819.html

贡献者: yangchong211
上一篇
02.UIViewController
下一篇
04.基础控件Swift版