iOS.& Swift Books iOS.Apprentice

2
Swiftui入门 由Joey Devilla撰写

有一个古老的中国人说,“千里之行始于一步”。你即将迈出你的掌握iOS开发人员掌握的第一步,你会通过创建一个名为的简单游戏来完成它 靶心.

本章涵盖以下内容:

  • swiftkit和uikit.:这些是构建应用程序和用户界面的两种方法,您将学习两者。
  • 靶心 game:您将在本节结束时完成的应用程序。
  • 入门:足够的序言 - 让我们创建一个新项目!
  • 面向对象的编程:快速介绍用于开发IOS应用程序的编程风格。
  • 添加交互性:一个刚刚坐着的应用程序没有乐趣。让我们做出回应用户!
  • 州和Swifui.:什么是“州”,与Swifui有什么关系?
  • 处理错误消息:当您的应用程序不起作用和错误消息比比时,该怎么办。
  • 应用程序的解剖结构:对应用程序内部工作的简要说明。

Swiftiui和Uikit.

曾归因于中国人的另一个(错误地):可能是有趣的时期。“根据您的观点,它是一种诅咒,它准确地俘虏,通过IOS 13的释放准确地阐述DitSelvis。

iOS.13介绍 Swifui.,iOS开发人员为其应用构建用户界面的新方法。它是 工具包,在编程中的意思是“现成的代码,您可以用作您自己的应用程序的构建块。” Apple在工作中努力促进Swifui作为建立新应用的首选方式,包括许多原因,包括它使您更容易将iOS应用程序移植到Apple的其他平台:MacOS,Watchos和TVOS。

这是新的苹果之外,没有说上许多专家,并为下一个小会,应用程序使用书面SwiftUI将是少之又少。现在学习它,你就获得了严重领先于其他开发商。

uikit. 是Swiftui的长期前身。自IOS 2.0以来一直存在,当Apple首次允许非Apple开发人员制作应用程序并将它们放在App Store中。它基于较旧的工具包, appkit. ,Thich是为麦斯科斯桌面应用程序的用户界面构建2001年的首次版本。

appkit. 来自NextStep,由下一步发出的操作系统,这是史蒂夫乔布斯在被苹果发射后创建的公司。苹果稍后被当作一个最后的沟(和疯狂成功)试图拯救当时的公司,而下则为Apple的21世纪的操作系统,包括iOS的基础。

uikit在一个带有屏幕的智能手机的概念和没有物理键盘的智能手机的概念时是席利克的一个完整的新想法。应用程序是新的东西,并且一般的哲学背部开发然后是“移动应用程序,就像桌面应用程序一样,但在一个带有微小屏幕的较低的计算机上。” iOS应用程序是写的唱歌目标-C,这已经是年龄的年龄甚至回来。

Swifui在后来设计了十年,在发达国家几乎每个人都有智能手机时,大多数人都在始终保持手臂的范围内。应用程序已经成立,一般哲学是移动应用程序是他们自己的软件类别,用户对他们的熟悉期望。

编写iOS应用程序的首选语言现在迅速。介绍时,它是非常现代化的,它继续发展,自最初发布以来每年发布新的主要版本。

由于Thees是Swifui的早期,iOS代码的苔藓你会发现你找到了使用uikit的威尔士。不久的将来对iOS程序员来说是有趣的,因为他们需要熟悉两个工具包。这本书是whny这本保证 UIKit.

您将建立在这本书的前两个应用程序使用SwiftUI,最后两个应用程序使用的UIKit。每个工具包都需要不同的编程方法,这将使事情挑战你。我们也希望学习都将是有益和有趣!

靶心 game

正如我们之前提到的那样,您将创建一个简单的游戏 Bullsye.。这就是你完成后的样子:

完成的牛赛博弈
NQA Qeloxgey Fagpmiji Ripu

警报弹出窗口显示得分
EW Ujuhq Biz-Ax Hcarg MLA Xhoha

制作编程待办事项列表

既然你已经看到了游戏应该是什么样的,而游戏规则是什么,列出你认为你需要做的所有事情,以便建立这个游戏。如果你画一个空白,但无论如何都要尝试一下,没关系。

入门

前两个项目 靶心 待办事项列表基本上是:

该应用程序包含一行文本和单个按钮(左),显示按下时显示警报(右)
LPA EBW Xoskeifc o Wiqe Up Zamq OTJ o Rinnfu Qijcot(QUBV)LPOZ ZWUBQ OF UYERQ WNUX WHUZRIJ(Zebws)

创建一个新项目

➤推出 Xcode. 。如果你发现它有困难,请看看 应用程序 文件夹或使用聚光灯(类型 ⌘空间 要激活它,请在出现的文本字段中键入“Xcode”。如果您还没有这样做,请将Xcode放入码头中,以便您可以轻松启动它。

 Xcode.  Bids欢迎您
Rxido Qefg Toi Zizcima

为新项目选择模板
Bbaulufb Pce Goggyume Quq Jye Pem SGECUVC

配置新项目
Xuykoperenf Bje Bil Wxalarf

选择在哪里保存项目
Tseatukp bmifu he vuna kca fqugatc

项目开始时的主Xcode窗口
FDE Guuk Lyawe Vifmul Op FPA在Moer Lggetorh中

看着编辑

你应该看的第一件事就是 编辑 ,它占用Xcode窗口的大部分左侧:

在新创建的单视图应用程序项目中的编辑器
yce oruhut前o sarzs lloocag qaqlvo vouv ozqfuxibuet krawaph

import SwiftUI

struct ContentView : View {
  var body: some View {
    Text("Hello World")
  }
}

看着画布

这是一个难以理解的想法只是通过看待enters代码来了解的想法。那是什么 帆布 是的。它位于编辑器的右侧,看起来像这样:

帆布窗格在一开始
TMO Pevsij Goqi Ed Nha Tlahw

编辑器选项按钮和菜单
KPE AVEVEJ AQGOIXZ romkiw AXR JOYA

按下恢复按钮后的画布窗格
Kme Bavbul Yija Usyex Zwobyukb Szu Hesuqi Ruvpug

运行您的项目

现在,让我们在模拟器中运行它来将您的项目带到生活中。

设备选择器
NDI Kipuse Tunluq.

选择带iphone xr的设备选择器菜单
Fwe Lozobo Sisseh Fosi Motm iNynumu Cy Sehojqem

按RUN启动应用程序
rxayk hoj te deerpv xqe axv

基于单视图应用模板的应用程序看起来像什么
Pjub A OSJ Kawen是YSO FAPRVU HEAS AMPPILUJEAW YAPFXEBA ZOUZZ JISO

使Xcode在模拟器上运行应用程序
devipm bmuwi din mga awf ik fsi yaxesetub

 Xcode. 活动查看器
SGE KSANI OGJOMAZG FAAQUM

按STOP按钮停止应用程序
FQAVY BMA NVUT ruwtow da mliy yzo uqg

改变文本

这是一个长时间的编程传统,编写一个简单展示“你好,世界!”的程序。学习如何以新语言或新平台编程。这就是为什么Apple使它成为单视图应用程序模板的一部分。到目前为止,Apple完成了所有的课程,为什么他们应该有所有的乐趣?让我们拍摄应用程序,为他们提供并将其用于您自己的母亲。

'Hello World',在编辑和画布中突出显示
'MEMQO WINDP',SEXFROFLFOQ ID QEMC CKI UNIVOP EGZ FKI Neytov

'Hello World',在画布中突出显示
'Xiywa Kilgs',Gapghibknov Iz Nje Wanzun

'Hello World',在编辑中突出显示
'lipku goyvf',catlculncon eb tno amehov

你好世界,在命令点击后
vermi pigqh,ajceb fuakw wirtzs-bqadxik

'你好世界'和检查员
'pofsa muqjt'agn bse owsdugsas

将检查器滚动到底部
TQWAJTIYQ WKU OLLJUNLAM PU JRE TAKHEF

编辑文本说'嘿那里!'
ebirilv msi tixy je fuc'amrzifa!'

'嘿那里',在编辑和画布中突出显示
'qaq ckebo',nefmwimdpum ah sku owijazulb sizrod

Text("欢迎 to my first app!")
struct ContentView : View {
  var body: some View {
    Text("欢迎 to my first app!")
  }
}
“欢迎我的第一个应用程序!”在编辑和画布中
'raxzaye vo bq jifgp igj!' ep mku imuvej owx raxnul

模拟器显示欢迎来到我的第一个应用程序!
YITUVICOY XOWJDUNUSK TAQWAYA WI SS TAVPV OZG!

制作文本更大胆

Tet一定涌现。如何通过唱更厚的更大胆的字体重量来制作一点服务?让我们试着这样做,唱歌和编辑。

“欢迎我的第一个应用程序!”和检查员
'rihtugi ye gn tacxl anq!' ONS FQI AZBZEKROL.

选择新的字体重量'欢迎您的第一个应用程序!
Clielahj o siv bunn noulcw wey'paxmoli ci gt fandl adc!

“欢迎我的第一个应用程序!”在编辑器和画布中的半old字体重量
'xecnuba da bx xuvln arf!' XICK PONUMOZW BAXZ LEEVQN,ER NBE ONUFEB UMZ DOLVES

“欢迎我的第一个应用程序!”用半代形重量,在模拟器中
'govloho wa gg lokhl inv!' Fexj Nukatuqj Pavg Duirqz,Aw Ybo Fefawowah

Text("欢迎 to my first app!")
  .fontWeight(.semibold)
Text("欢迎 to my first app!")
  .fontWeight(.black)
改变字体重量时出现的代码完成
Cogo Cihbxomoog Asbouvanf Hpup Kvetqunj DQo Xowk Fuiynn

“欢迎我的第一个应用程序!”用黑色字体重量,在模拟器中
'Daxfoze HA GV Kocsr ECF!' PIBC YRAGY SUBS SEADGK,IJ KZA TUFIFUFIG

改变文本的颜色

让我们通过改变其颜色来使文本更加突出,并且让我们在这个时候就在编码中进行。

Text("欢迎 to my first app!")
  .fontWeight(.black)
  .foregroundColor(.green)
代码完成出现,将新修改器添加到“欢迎您的第一个应用程序!”
HUMI TUKZCOXOAH UCVUAHANG EFWEQQ O KAV SIRUUUQ CE'DOMWITO QO WQ CARQS ADF!'

代码完成显示添加指定指定“欢迎使用我的第一个应用程序的颜色!”
Zipi Pobwwiteix Utjuuneqv Ikzabk Pnabifheyb O Cigah Sul'Dultube是GW Kogyr UGR!'

面向对象的编程

在继续应用程序之前,是时候在主题上看一下 面向对象的编程。你可能没有意识到这一点,但你已经这样做了!

对象

对象的编程是一种方法:尝试通过将封面划分为来管理编写程序的复杂性 对象。对象是代表真实世界的东西或抽象概念的程序。在乘车共享应用程序中,用户是一个对象,就像驱动程序和他们的汽车一样。在社交媒体应用程序中,每个用户帐户都是一个对象,每个用户帐户都有许多对象的帖子和照片。在那个游戏中,目的通过重新排列匹配的糖果将匹配的糖果分成组,糖果是对象,因此播放器重新排列糖果的板也是如此。

对象
QHO Eydabzh.

struct ContentView : View {

属性和方法

对象由这两种东西中的至少一个组成:

var body: some View {
Text("欢迎 to my first app!")
  .fontWeight(.black)
  .color(.green)
方法链接的方法解释说明
ximfir kteetutj ashjuewot.

添加交互性

现在,应用程序只显示文本,然后只是坐在那里。这根本不会做的事:它的时候添加一些互动!您可以通过添加标记的按钮做这个“打我!”,这是待办事项列表中的应用程序的关键项目之一。

图书馆按钮
sco quznoxf qafluf.

图书馆窗口
sto weykamx kuxbuk.

库窗口,选择按钮视图
Wje qayjuhz wubxer,dehb dwa sajwej geec hulehdaw

将按钮拖到视图上
HKAZMILZ I WEDVAF AMXA MKU HAUY

编辑器和画布,按钮添加了按钮
fqi akuxum unp katdoz,notl xdo reqvit oxpub

struct ContentView : View {
  var body: some View {
    VStack {
      Text("欢迎 to my first app!")
        .fontWeight(Font.Weight.black)
        .color(Color.green)
        Button(action: {}) {
            Text("Button")
        }
    }
  }
}
Button(action: {}) {
    Text("Button")
}
VStack {
  Text("欢迎 to my first app!")
    .fontWeight(Font.Weight.black)
    .color(Color.green)
  Button(action: {}) {
    Text("Button")
  }
}
vstack,代码和屏幕上
NXWEMB,AQ SIPA EDS AM CWI HHYIEQ

Button(action: {}) {
  Text("打我!")
}
这个应用程序,用击中我!添加按钮
胸罩IVW,Nuby Rzo Bow Tu! Kizdab Umzev.

响应按钮点击

让我们回到定义按钮的代码:

Button(action: {}) {
  Text("打我!")
}
Button(action: {
  print("Button pressed!")
}) {
  Text("打我!")
}

利用力量 print()

➤单击 跑步 按钮,当应用程序在模拟器中启动时,单击 打我! 按钮几次。

调试窗格,显示“按下按钮”
BPE Laras Bojo,Zofqkisugt'Woqyan Hzusvez'

州和Swifui.

编程Swiftiui的关键部分是 状态 。而不是从计算机科学定义的状态,让我们一起去一些可能有点熟悉:汽车的仪表板。

汽车的仪表板
rjo suvdbeilp aj e quf

单键应用的状态空间

与我们的汽车示例不同,您构建的一键应用程序具有更小的状态空间。如果您忘记了,让我们仔细看看本章末尾的应用程序将如下所示:

本章末尾的应用程序看起来像什么
BTUX ZDU UPG YEJQ NEAQ FIGU XW QDU IMV IK GQOB LQAKBAP

一个按钮应用程序的状态图
DXEBU WUIDCOD ROK SLI UTI-YAHJUH EPG

SWIFTUI和国家空间

编码SWIFTUI中的用户界面类似于绘制图迹。就像一个优势状态和所有接口Gosight,Pososlep联系了可发亮的屏幕布局和转换屏幕布局。它是用户界面的状态图,代码表单。

struct ContentView : View {
  var body: some View {
    VStack {
      Text("欢迎 to my first app!")
        .fontWeight(.black)
        .color(.green)
      Button(action: {
        print("Button pressed!")
      }) {
        Text("打我!")
      }
    }
  }
}

使用变量表示应用程序中的状态

让我们再回到车上例如,一个更多的时间,汽车的状态是由值了。一些值是数值,例如速度,燃料水平和发动机温度。其他人则“开/关”或“是/否”,如值按指定的警示灯。

struct ContentView : View {
  @State var alertIsVisible: Bool = false
  
  var body: some View {
    VStack {
      Text("欢迎 to my first app!")
        .fontWeight(.black)
        .color(.green)
      Button(action: {
        print("Button pressed!")
      }) {
        Text("打我!")
      }
    }
  }
}
struct ContentView : View {
  @State var alertIsVisible: Bool = false
  
  var body: some View {
    VStack {
      Text("欢迎 to my first app!")
        .fontWeight(.black)
        .color(.green)
      Button(action: {
        print("Button pressed!")
        self.alertIsVisible = true
      }) {
        Text("打我!")
      }
    }
  }
}

定义其他状态的布局

值得重复:在SWIFTUI中,您可以为所有可能的状态定义布局。布局的布局 欢迎 国家已经在代码中;现在是时候为另一个状态定义布局的时间 - 警报 state, which is the app’s state when the variable alertIsVisible contains the value true.

struct ContentView : View {
  @State var alertIsVisible: Bool = false
  
  var body: some View {
    VStack {
      Text("欢迎 to my first app!")
        .fontWeight(.black)
        .color(.green)
      Button(action: {
        print("Button pressed!")
        self.alertIsVisible = true
      }) {
        Text("打我!")
      }
      .alert(isPresented: self.$alertIsVisible) {
        Alert(title: Text("Hello there!"),
              message: Text("This is my first pop-up."),
              dismissButton: .default(Text("Awesome!")))
      }
    }
  }
}
警报弹出
nfu iwups pub-ek

.alert(isPresented: self.$alertIsVisible) {
  Alert(title: Text("Hello there!"),
        message: Text("This is my first pop-up."),
        dismissButton: .default(Text("Awesome!")))
}

处理错误消息

如果单击后,Xcode为您提供“构建失败”错误消息 跑步 ,请确保首先正确地在一切中输入。编译器是挑剔的,甚至最小的错误可能会使Xcode混淆。首先可以非常压倒,了解Xcode吐出的错误消息。源文件顶部的一个小字码级可以级联并在该文件中其他地方产生多个错误。

 Xcode. 向您展示了括号的完整块
JPEQI VTODS HAU RSO Tupvfuju HNIYQ ZOY Xzeloq

 Xcode. 确保无法错过错误
BTOMI Quxuf Pusi Qia Noq'w Guvt exqutc

修复 - 它表明解决问题的解决方案
PEF-EW Kuwdumfb I Tilomueg Te Yru Gwenfub

修复 - 它实现了它的解决方案
TOF-OG UZFQEFEGCZ UCX JEPIQAAS

您的应用的解剖结构

让我们通过查看您的应用场景后面的内容来完成本章。

您的应用的解剖结构
HYI AQELART UT RAX EBC

有一个技术问题?想报告一个错误吗? 您可以向官方书籍论坛中的书籍作者提出问题和报告错误 这里 .

有反馈分享在线阅读体验吗? 如果您有关于UI,UX,突出显示或我们在线阅读器的其他功能的反馈,您可以将其发送到设计团队,其中表格如下所示:

© 2021 Razeware LLC

您可以免费读取,本章的部分显示为 混淆了 文本。解锁这本书,以及我们整个书籍和视频目录,带有Raywenderlich.com的专业订阅。

现在解锁

要突出或记笔记,您需要在订阅中拥有这本书或自行购买。