3.1 创建项目
3.1.1 准备工作
- 至少略微学习一下 Swift
- 需要苹果电脑,并且下载安装 XCode(Mac AppStore)
- 至少准备一个 iOS 手机用于运行,否则只能使用模拟器
3.1.2 创建 iOS 项目
打开 XCode,选择 Create a new XCode project:
选择 Single View App,然后 Next:
填写项目参数:
3.1.3 项目结构
3.2 基础开发介绍
iOS开发的知识非常多,这里不做过多的讲述,目前先了解以下几点:
- UIApplication和UIApplicationDelegate
- 关键组件的关系
- UIViewController的生命周期
- RootView视图根节点
3.2.1 UIApplication与AppDelegate
App启动会创建一个UIApplication,UIApplication会调用AppDelegate的生命周期方法,比如:
- willFinishLaunchingWithOptions: 即将启动app
- didFinishLaunchingWithOptions: 启动了app,很多初始化的代码通常写在这里
- applicationDidBecomeActive:App恢复活动,比如从App管理屏回来
- applicationWillResignActive:App暂停活动,比如上划去到App管理屏
- applicationDidEnterBackground:App进入后台
- applicationWillEnterForeground:App即将回答前台
- applicationWillTerminate:App即将终止,比如被杀
通过didFinishLaunchingWithOptions我们可以建立UIWindow,和建立第一个UIViewController,然后 调用UIViewController的生命周期,然后就是初始化视图
3.2.2 关键组件的关系
UIWindow以树状的结构包含了App的所有UIView
UIViewController即控制UIView的逻辑部分,像MVC模式的C,同时也包含iOS平台特性的生命周期和相关功能
UIView则是指各种控件,所有控件都最终继承自UIView这个类
3.2.3 UIViewController
UIViewController 类是 iOS 应用的关键组件,对于前端来说,打开一个UIViewController可以认为是
使用window.open或者是点击 <a> 标签打开一个新的页面,只不过它还包含iOS特性的功能。
UIViewController的生命周期
目前先了解以下生命周期方法即可
- loadView: view创建代码写在这里
- viewDidLoad:view加载完毕,view的操作在这
- viewWillAppear:view即将出现,还未渲染在屏幕上
- viewDidAppear: view已经出现,已经渲染在屏幕上
- viewWillDisappear:view即将消失
- viewDidDisappear:view已经消失
RootView
每一个UIViewController都有一个根节点:
class ViewController: UIViewController {
override func loadView() {
// 可以通过self.view访问根节点,根节点默认大小是全屏的
self.view = UIView()
// 可以通过self.view.addSubView添加子view
let label = UILabel()
label.text = "Hello world"
self.view.addSubview(label)
}
override func viewDidLoad() {
print(self.view)
}
}
3.2.4 iOS布局
每一个控件都有自己的布局属性,这里列举两个了解一下:
- frame: 它包含x/y/width/height,代表UI的位置和尺寸
- margin:代表了自己和其他组件的距离
3.2.5 扩展阅读
3.3 WebView加载网页
3.3.1 ViewController代码编写
import UIKit
// 引入iOS的WebKit库
import WebKit
class ViewController: UIViewController, WKUIDelegate {
var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
// 创建WebView,先不用理解Configuration
let config = WKWebViewConfiguration()
webView = WKWebView(frame: self.view.frame, configuration: config)
webView.uiDelegate = self
self.view.addSubview(webView)
// 加载百度页面
let url = URL(string:"https://www.baidu.com")!
let request = URLRequest(url: url)
webView.load(request)
}
}
3.3.2 运行
选择一个模拟器运行,模拟器启动需要几分钟时间,你也可以使用真机测试。
效果图:
到这就完成了 WebView 加载网页。
3.3.3 iOS 真机运行需要签名的问题
将 App 运行到真机时,有可能面临这个错误:
Signing for "xxx" requires a development team. Select a development team in the Signing & Capabilities editor. (in target 'xxx' from project 'xxx')
如图:
解决方法:需要 xcode 登录一个苹果账号,可以使用你真机的苹果账号
- 按如图步骤选中
- 点击红框处
- Add an Account
- 点击加号,登录你的苹果账号
- 等待 XCode 自己修复
- 运行 App 后输入电脑的开机密码,点击始终允许
- 项目安装至手机后,打开手机设置 => 通用 => 描述文件与设备管理,可以看到刚刚添加的苹果账号,点击信任此开发者APP账号,至此设置完成
如果出现其他意外问题,可优先通过 Google 解决或评论留言