我的第一个iOS项目(Swift版)

题记:对于一个2013年开始iOS的老iOSer,现在开始写这样的文章,我已经无力吐槽自己了。休假三年,也忘记的差不多了,慢慢捡的时候,也写些基础,作为笔记吧。
创建时间: 2020年3月23日
系统环境:macOS Mojave (v10.14.6)
Xcode:V 11.3 beta
准备:你需要有一台Mac OS系统的电脑。在刚入门的时候,公司比较困难,所以用的黑苹果,就是window上装的Mac OS系统。这有个弊端,本身Xcode就不大稳定,再配上不稳定的黑苹果,对于刚入门的孩子,运气不好的话,绝对是打击。因为,即便你代码写对了,也可能出现其他奇葩的问题。所以,既然决定入门,就准备一台苹果电脑吧。致于苹果手机,可以暂时不需要的。

开发工具:Xcode
一定一定要从App Store下载。记得当时,某知名企业,员工不知道从哪下载的Xcode,开发的App直接被植入木马了......

一.创建一个新项目

我们直接用图,更直观的表述操作流程:
点击红色框,创建新项目。如果,你只是想进行swift语法的学习,那么你可以选第一项【Get started with a playground】。粉色框里,一般会显示你最近打开过的项目。


STEP 1

如果要创建手机项目,默认选iOS就好。普通的手机项目,我们一般直接用默认的Single View App。点击【Next】。


STEP 2

Product Name是你项目的名称,一定要第一次就写好了。后期虽然可以改,但是修改的过程中,如果落掉某项,会导致整个项目瘫痪,所以不建议你中途修改项目名称。
Team,可以不填。如果你需要真机测试,就要填上你对应开发者账户的Team名称。这个你可以搜一下,“iOS 真机测试”,我相信会有很多文章告诉你如何操作。
Organization Name,你可以填上你所属公司的名字,要英文哦。当然,如果你只是个学生,你可以填上自己的名字。这个后期都很容易修改,貌似是在App Store上会显示的,具体记不住了。不过,初学者,不用纠结,随便填。
Origanization Identifier,这个是必须填的,一般是www.baidu.com这种形式的,拼接项目名称,会成为App的ID,且是唯一标识。为了不与他人重复,你要写公司的网址或者你自己起个比较个性的,都无所谓,后期也是可以修改的。
Language,有Swift和Objective-C两种,这里默认为Swift,所以不用选了。
其余的选项,暂时先不选了,点击【Next】,选择你的workspace,就是你想把这个工程放到哪里。

STEP 3

现在,你已经成功创建了项目。在某个版本之前,启动文件是AppDelegate.swift,是没有SceneDelegate.swift这个文件的,它是为了让iPad支持多窗口的结果。对于手机App,你可以将其直接删除。不过,删除后,要做一些改动。

项目文件夹

好了,上图,蓝色框是模拟器,绿色框是Run按钮,点击【Run】,会启动模拟器,启动模拟器是一件相当耗内存的事情,也很考量电脑性能。笔者目前电脑是Imac的顶配,运行模拟器的时候,依然会听见风转呼呼转的声音。
运行后,界面是一个白板。接下来,我们简单的配置一下,然后很俗气的让画面显示Hello world!

二.简单的配置

这里,有很多分支。
首先,你是否想要支持多窗口?这里我们选择不支持。
你是否需要storyboard呢?还是想纯手工代码?storyboard开发速度较快,是可视化的布局,纯手工代码,因为自适应的约束条件的加入,写起来要比以前麻烦多了,但是纯手工代码有一个好处,就是迁移起来比较容易,代码也容易复用。
笔者,写这篇文的时候,是想用自己熟悉的Xcode,处理下DB文件,打印出其他项目需要的Enum类型。初学者,其实建议你用storyboard,通过可视化,了解下约束条件,再写纯代码的时候,会更容易理解。

好了,我们来删掉SceneDelegate.swift这个文件。
Step1: 删除项目info.plist文件中的Application Scene Manifest的配置数据

点击选中那一行的减号即可删除

Step2: 删除AppDelegate中关于Scene的代理方法
AppDelegate.swift文件中,有个“ // MARK: UISceneSession Lifecycle”,它下面的两个方法就是Scene的代理方法,都删除。
Step3: 删除SceneDelegate的类(不删也可以)
Step4: 如果使用storyboard,则需要在AppDelegate.swift中添加window属性,否则会黑屏,如下:

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow? //这一行是我们自己加上的

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        return true
    }

......省略

之后,我们来设置一下启动的storyboard,即Main.storyboard。这个是否可以换成别的呢?当然可以,只要配置一下就好,之后我会抽时间,单独做一篇关于Xcode配置的文章,不过,估计这是一个很久远的事情,不如我们需要什么,就查什么。
按照下图,我们设置下背景颜色,红色框,就是设置的地方。可能初学者,发现自己的右侧边栏,怎么跟我的截图不一样呢?那么,请你从左至右,仔细查看,我每一栏都选中了什么。


Main.storyboard

蓝色按钮是STOP按钮,我们先STOP,再Run一下。好了,你会看到你的模拟器界面背景颜色变成你设置的颜色了。

三.显示Hello World

如果,你仔细观察上图,你会发现第二栏里,写着的是【View Controller Scene】,没错,这个就是链接了ViewController.swift文件。我们可以实验一下,在ViewController.swift中,加入设置背景颜色的代码以及Hellow world的文本:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        self.view.backgroundColor = UIColor.red //设置背景颜色
        //显示Hellow world
        let label = UILabel.init(frame: CGRect.init(origin: CGPoint.init(x: 150, y: 280), size: CGSize.init(width: 200, height: 50)))
        label.text = "Hellow world!"
        self.view.addSubview(label)
    }
}

然后,再运行一次模拟器,界面变成了红色,并且显示了Hellow world。
我们可以看到,代码里设置背景颜色,会高于storyboard里的。但是,在实际开发中,不要做这种矛盾的设置。
另外,label是用frame来确定位置的,但是,通常开发中,用的是约束条件来确定位置,这样,可以更好的适应不同尺寸的屏幕。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 228,119评论 6 531
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 98,382评论 3 415
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 176,038评论 0 373
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 62,853评论 1 309
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,616评论 6 408
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 55,112评论 1 323
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,192评论 3 441
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,355评论 0 288
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,869评论 1 334
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,727评论 3 354
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,928评论 1 369
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,467评论 5 358
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,165评论 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,570评论 0 26
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,813评论 1 282
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 51,585评论 3 390
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,892评论 2 372

推荐阅读更多精彩内容