本文目录

  • 前言
  • 创建一个纯代码编辑的Swift + UIKit项目
    • 创建一个Swift + UIKit项目
    • 让它变成纯代码编辑的
  • 让你的APP打开指定的ViewController
    • 创建一个窗口
    • 编辑ViewController文件,看下它是否真的被打开了?

前言

校招入职公司一年多了,现在也总算是告别了什么都不会的新手期,处理日常工作时也不至于面对需求无计可施。但是我总感觉,作为一个初涉iOS的工程师而言,多去造造轮子,做做项目,对自己的提升应该也会更快。这个过程里,我也可以更快熟悉苹果生态,将自己的身份从一名iOS开发新手,转变为iOS开发者。(虽然公司的基建很赞,让我不用操心这些东西,但是一直依赖下去可也不是什么好事= =)

在这半年内,我会开始根据100Day Swift列出的一系列项目,去重新做一遍,并且将遇到的各个基础知识整理到博客中,方便以后查阅和使用。也欢迎各位同行指出不足,一起进步。

  • 本文适合的读者:

    • 有过客户端开发经历,了解客户端常用架构(MVC/MVP/MVVM)
    • 熟悉Swift语法,或已完成了Swift的学习
    • 想了解iOS的开发流程
  • 本文涉及到的项目:Project 1 - Tap Counter
  • 本文的主题:如何使用纯代码方式创建一个Swift + UIKit项目
  • 环境相关:
    • 开发环境:macOS 12.4 + XCode 13.4.1
    • iOS target:15.0
    • Swift 版本:Swift 5.3

创建一个纯代码编辑的Swift + UIKit项目

创建一个Swift + UIKit项目

打开Xcode,右上角File → New → Project

在弹出来的Xcode弹窗里,点击一下iOS这个tab下的App,然后点击Next

在弹出来的界面中,需要填以下的信息:

  • Product Name:APP名

  • Organization Identifier:APP属于什么企业,标识符是什么

  • interface:UI框架,选择Storyboard,这一项对应着UIKit

  • Language:编程语言,选择Swift

选择项目的存储路径,然后恭喜你,你已经成功创建了这个项目啦。

让它变成纯代码编辑的

接下来,你将会删除掉项目对StoryBoard的引用。StoryBoard的本质很像Android、QT、UWP开发中的可视化界面,你可以在里面用xml/xaml语法快乐的拖动UI,并且所示即所得。

但是iOS工程界目前对这个方案还是不太喜欢的,业界更倾向的方式是:手撕UI,并且手撕布局。在这一节中,我会列出实现的方案。

首先,点击左侧列表中,你创建的项目。

然后在右方展示的general这个tab中,删除Main interface里的内容。

然后,点击左侧中的info文件,像我这样展开目录树。

然后点击最下方的storyboard name,敲一下backspace,删掉。

恭喜你,现在你获得了一个丢弃掉StoryBoard的项目了。接下来,我会教你怎么让你的APP打开第一个页面。

让你的APP打开指定的ViewController

我们以客户端常见的架构,MVC(Model、View、Controller)为例。纯代码的iOS开发会有稍许不一样,视图控制器(ViewController)往往需要承担视图+控制器的责任。

本小节,我会讲述如何让APP打开项目中已经创建好了的ViewController。

创建一个窗口

iOS的APP以窗口(Window)来显示页面。在跳转到ViewController之前,你需要创建这个APP的Window,然后将这个window的第一个视图控制器,设置为项目中的ViewController。

首先,打开SceneDelegate文件,然后删掉func scene(_:willConnectTo:options:)中的代码,用下面的代码粘贴上去。

class SceneDelegate: UIResponder, UIWindowSceneDelegate {var window: UIWindow?func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {guard let windowScene = scene as? UIWindowScene else { return }// Step 1. 创建let window = UIWindow(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height))// Step 2. 设置背景色window.backgroundColor = .clear// Step 3. 设置第一个ViewControllerwindow.rootViewController = ViewController()// Step 4. 让它可见,并且做好事件监听window.makeKeyAndVisible()window.windowScene = windowScene// Step 5. 告诉APP,这就是你的windowself.window = window}
}

这段代码中,我们创建好了一个window变量,并且传给APP:

  1. 这个window是全屏的:它的大小等于屏幕的大小,位置从(0, 0)开始

  2. 这个window没有背景色

  3. 我们创建了一个ViewController变量,并且将它设为这个window的第一个ViewController

  4. 接下来,我们让这个window可见,并且做了一定的事件监听,这部分可以忽略

编辑ViewController文件,看下它是否真的被打开了?

然后,打开ViewController文件,用下面的代码粘贴上去。

和原来的代码比起来,这段代码里我们只做了一件事:我们希望打开的第一个页面是棕色的。

class ViewController: UIViewController {override func viewDidLoad() {super.viewDidLoad()view.backgroundColor = .systemBrown}
}

运行一下试试?然后你会看到你的模拟器打开了这么一个APP。

恭喜你,你的ViewController页面已经被打开了。

[纯代码] Swift+UIKit · 搭建第一个iOS APP项目相关推荐

  1. 视频教程-从零开发一个iOS企业级项目实战之我的云音乐视频 教程-iOS

    从零开发一个iOS企业级项目实战之我的云音乐视频 教程 任苹蜻,爱学啊创始人 & CEO,曾就职于某二车手公司担任Android工程师后离职创办爱学啊,我们的宗旨是:人生苦短,我们只做好课!熟 ...

  2. 如何用 React Native 创建一个iOS APP?(二)

    我们书接上文<如何用 React Native 创建一个iOS APP?>,继续来讲如何用 React Native 创建一个iOS APP.接下来,我们会涉及到很多控件. 1 AppRe ...

  3. 使用MVVM Swift UIKit RxSwift 写一个SpaceX 发射计划APP

    文章: Build a simple SpaceX Launches iOS app with MVVM and RxSwift 源码 GitHub - ykpoh/SpaceXLaunch: A i ...

  4. 怎样做一个iOS App的启动分层引导动画

    http://www.cocoachina.com/ios/20141211/10610.html 一. 为什么要写这篇文章? 这是一个很古老的话题,从两年前新浪微博开始使用多层动画制作iOS App ...

  5. 怎样做一个iOS App的启动分层引导动画?

    一. 为什么要写这篇文章? 这是一个很古老的话题,从两年前新浪微博开始使用多层动画制作iOS App的启动引导页让人眼前一亮(当然,微博是不是历史第一个这个问题值得商榷)之后,各种类型的引导页层出不穷 ...

  6. Eclipse搭建第一个Spring boot项目

    创建Spring boot项目之前,默认大家都已经下载好了Eclipse和Maven,并配置好了相关的环境. 一.下载STS插件 要创建Spring boot项目,首先得下载相应的插件,进入Eclip ...

  7. 介绍上架一个iOS APP需要多少钱

    经常收到咨询说ios app上架App Store需要多少费用?一两句话解释不清,ios APP上架涉及到方方面面,这里介绍下iosios app上架App Store需要的基本费用.APP开发的费用 ...

  8. ios APP项目架构心得

    iOS项目架构分为以下几步,这些都是总结的经验之谈 1.架构 1.架构这个概念很抽象,但是用一句话来说叫看菜吃饭,有些人喜欢先看UI在架构,有些人喜欢先把该有的东西有了再看UI,其实都可以-.. 2. ...

  9. 创建第一个Flutter App项目

    上篇,我们讲了Flutter在Windows下开发环境的配置,并创建一个新的Flutter项目.这篇我们来讲,创建Flutter App项目. 看下我们最终实现的效果: 第1步: 创建 Flutter ...

最新文章

  1. 此选项卡已恢复的处理过程
  2. 成功解决TypeError: Scalar value for argument 'color' is not numeric
  3. 大数据?人工智能?揭秘银行数据仓库发展趋势
  4. 剑灵电五服务器位置,选对服务器很重要 剑灵新手选服攻略
  5. 计算机自动化专业强的二本大学,2020自动化专业大学排名公布
  6. linux系统下安装中文字体步骤
  7. 现代薄膜温室大棚五大优点,常用的经济作物都有哪些?
  8. 实战SOHO接单的全过程
  9. omap3530支持gpu模块
  10. instrument之Time Profiler总结
  11. Python求最大公倍数
  12. linux安装mysql出现Could NOT find Curses (missing CURSES_LIBRARY CURSES_INCLUDE_PATH),提示解决方法
  13. python中 [:],[::]的用法
  14. Arduino读取GPS模块
  15. #SORA#flask实验
  16. redis关闭后在连接报错误:Could not connect to Redis at 127.0.0.1:6379: Connection refused
  17. 举例说明层次分析的三大原则_《搞定》一个境界、两个维度、三大原则让你轻松搞定繁重的事务...
  18. android之DPAD上下左右四个键控制
  19. 一行代码解决约瑟夫问题(我要开始装B了)
  20. Linux指令-source

热门文章

  1. [信息论与编码]离散信源及其信息测度(2)
  2. 河南省旅游服务中心信息中心备份及集成
  3. Centos7 定时关机
  4. blender 绘制离散顶点, SMPL骨架绘制
  5. 大前端开发 前端如何开发 APP
  6. 同花顺镰刀三头牛指标公式源码
  7. html如何连接外部样式表,怎么链接外部css文件?
  8. AJAX学习笔记——发送AJAX的POST请求,模拟from表单提交
  9. vs2017运行yolov4_VS2017运行YOLOv4
  10. Flink-DataStream执行环境和数据读取