在上两个章节中,咱们快速树立并完结了登录页面和引导页,在惯例的App开发中,除了引导页、登录页外,一闪而过的发动页可能最简略让人忽略。
发动页,作为在App发动过程中用户所感知的第一个页面,与引导页、登录页构成了用户对产品形成的第一印象。
本章节中,咱们来讨论它们之间的联系,而且采纳实战编程的办法实现它们之间的交互逻辑。
需求剖析-页面逻辑
首要,咱们先剖析下惯例的App登录交互逻辑。当用户翻开App时,会遇到哪些页面?
- 发动页:当用户翻开APP时,在发动APP的过程中被用户所看到的过渡页面或动画。
- 引导页:当用户装置或更新APP后初次发动APP时展现的3-5个滑动页面便是引导页,协助用户更加清晰的了解产品定位与功用服务。
- 登录页:供给账号登录办法,获取用户根本信息,用于计算用户留存或许供给专属服务的身份认证页面。
- 主页:APP的主要功用展现。
发动页、引导页、登录页、主页,它们的逻辑次序如下图所示:
当用户翻开App时,系统发动App并伴跟着发动页,若当前用户为初次翻开App,则会翻开引导页。
用户跟着引导页的指引,在引导页最终一页点击操作,进入到登录页面,对于强登录的App,则需求登录认证身份后才可以运用App功用。
而对于弱登录性质的App,可通过跳过封闭登录页面进入主页,并在下一次翻开运用时不再弹出登录页。若是东西类运用,则可以直接不要登录页。
UI规划-运用图标
在正式进入编码之前,咱们先规划一个简略的运用图标的UI。运用图标规划办法呈现多样化,最能凸显产品品牌和产品服务主旨的也是最简略的,便是简略的背景色彩+图标icon。
下载并翻开AdobeXD
规划软件,挑选“自定义巨细
”,设置宽高为1024*1024
,如下弹窗所示:
选中视图,挑选右侧款式栏中的“填充”操作,挑选“线性突变”,设置视点为斜45度,色彩突变为#9890e3→#b1f4cf
。
拖入一个icon图标,调整其巨细,设置其填充色彩为白色,咱们就得到了一个产品Logo
图标,如下所示:
规划好根本款式后,挑选文件 > 导出 > 导出
,挑选一切面板。在保存文件弹窗中修改名称为“logo
”,导出格局为“PNG”,导出巨细为“1x”,点击“导出一切面板”,AdobeXD将会保存导出一张1024*1024的UI规划稿图片。
为了得到不同尺度的程序图标,咱们可以下载Apple官方的ProductionTemplates
,下载并翻开,拖入规划好的1024*1024尺度的规划稿到最大的空白框中,就可以遍历得到契合Apple官方的全部尺度程序图标,如下图所示:
批量导出保存之后,程序图标的预备工作就完结了。
实战编程-创立项目
翻开Xcode开发东西,点击Create a new Xcode project,将新项目命名为PageSetting
,如下弹窗所示:
命名好项目后,指定保存途径,一个SwiftUI项目就创立完结了。
实战编程-程序图标
点击视图东西栏的Assets.xcassets
文件,咱们发现有一个空的运用程序图标组挑选AppIcon
,选中时将会出现多个不同尺度的导入图标界面,如下页面所示:
咱们将规划好的图标图片拖入到AppIcon对应尺度的空白框
中,如图所示:
完结后点击“运转”,咱们就可以在模拟器中看到带有规划图标的运用程序了,如下图所示:
实战编程-发动页
接下来,咱们正式树立发动页。Xcode开发东西制作发动页动画的办法有2种,一种是通过故事板和束缚布局技能来创立发动动画,另一种是直接指定图片作为发动页。这儿,咱们为了更好地扩展性和编程灵活性,选用第一种办法构建发动页。
在Assets.xcassets
文件拖入3种尺度的程序图标,并把最终的运用图标命名为logo,如下弹窗所示:
挑选File > New > File
,挑选LaunchScreen
,点击Next,如下弹窗所示:
Xcode开发东西将主动创立好一个故事板页面
,开发者可以直接在故事板中运用拖动的办法构建页面,这也是我在SwiftUI之前最喜欢的开发办法,运用故事板和极少的代码即可完结一个简略的静态页面。
点击顶部东西栏右上角的“+”按钮,挑选之前导入到素材库的图片,将组件拖到视图中。再挑选一个Label组件,双击修改文字为“连接你和世界”,将组件拖到底部,如下图所示:
元件放置在视图之后,还需求树立束缚布局联系,才能确保在不同机型下组件的方位和巨细不会产生偏移和形变。
树立束缚的办法为选中单个组件,然后点击右下角的“增加布局束缚”按钮,设置好组件相对间隔,示例:Label文字,咱们设置它间隔底部60,间隔左右间隔20,文字排布为居中。同理,咱们设置logo图片为固定展现尺度,而且间隔顶部间隔为200,与视图垂直居中。
故事板和束缚布局在这儿就不翻开讲了,后续也根本用不上这种开发办法。
创立好LaunchScreen内容后,咱们在PageSettings运用主要设置页面
中设置发动画面为LaunchScreen
文件,如下图所示:
完结后,当咱们每次翻开App时,运用发动过程中都会加载发动页画面。
启用页是用户第一眼看到的视图页面,但仅限于运用程序被启用时展现。因为Apple独有的虚拟后台技能,及时运用程序挂至后台也是处于虚拟启用状况,因而不是每一次都能看到发动页。
接下来,咱们在完结启用页,结合前两章的引导页、登录页的基础上完结运用程序页面之间的交互逻辑。
实战编程-页面预备
咱们创立2个SwiftUI文件,右键,挑选New File,挑选SwiftUI文件,登录页命名为LoginView
,引导页命名为GuidePageView
。
并将前两章的代码复制到新创立的SwiftUI文件里,别忘了导入的本地图片也需求再导入到这个SwiftUI项目中。完结后如下图所示:
这时,咱们就有了默认的发动页LaunchScreen
、引导页GuidePageView
,登录页LoginView
,主页ContentView
。
实战编程-页面交互
在学习页面交互之前,咱们先来了解下MVVM开发形式
。MVVM开发形式,指的是Model-View-ViewModel
形式,简略来说,便是将页面、数据、数据处理分开。
之前的章节内容咱们完结的最多的是View
的部分,Model
数据部分在后面的章节中咱们也常常提及,这儿咱们页面交互逻辑用的的逻辑部分,都归于ViewModel
。
在左侧视图东西栏中右键,挑选New File,挑选Swift
文件,命名为ViewModel
。键入以下的代码:
import Foundation
import SwiftUI
class ViewModel: ObservableObject {
@Published var isLogin: Bool = false
@AppStorage("App_firstLaunch") var Apps_firstLaunch: Bool = true
}
引证SwiftUI后,咱们创立了一个类ViewModel,遵从ObservableObject
协议。这儿声明晰2个变量,一个是isLogin
,判别是否登录。另一个是控制引导页,因为引导页是初始初次翻开App时才展现,因而需求运用@AppStorage
声明。
声明好必要的参数后,咱们来到PageSettingsApp页面,这是整个App加载时展现的页面,也便是@main主函数页面。
首要引证创立好的ViewModel类,代码如下:
@StateObject var viewModel = ViewModel()
在主体代码部分,App加载的内容需求依据咱们声明好的变量状况进行展现,当咱们是第一次展现时,加载引导页GuidePageView,如果不是,则判别是否登录,若没有登录则展现登录页,登录后则展现主页,完整代码如下:
import SwiftUI
@main
struct PageSettingsApp: App {
@StateObject var viewModel = ViewModel()
var body: some Scene {
WindowGroup {
if viewModel.Apps_firstLaunch {
GuidePageView().environmentObject(viewModel)
} else {
if viewModel.isLogin {
ContentView().environmentObject(viewModel)
} else {
LoginView().environmentObject(viewModel)
}
}
}
}
}
完结后,相应地咱们在引导页GuidePageView中也需求引证ViewModel类,代码如下:
@EnvironmentObject var viewModel: ViewModel
声明好后,在引导页最终一页点击按钮操作时,更新Apps_firstLaunch
状况为false
,如下图所示:
同理,在LoginView页面中也需求做同样的操作,引进ViewModel类,将isLogin
状况更新为true
,如下图所示:
整体作用-预览
点击模拟器顶部的“运转
”图标,尝试拖动页面,作用如下:
本章小结
本章涉及到的知识点有点多,如果有哪一块不太了解可以重复看一下实现细节。其实在过往的产品研制过程中,产品、规划、开发,自身便是一体化的工作,仅仅现在因为劳作分工导致的职业化罢了。
其中引导页、登录页为上两章节的内容,如果不太了解,可以先行学习上两章节内容再回到本章进行学习。
在本章中初次运用到了MVVM开发形式,相比较MVC形式,代码更加清晰简洁,更适合协同开发。当然对个人开发者来说,也更好地契合面向对象编程的办法,但具体运用什么开发办法,仍是要依据不同开发环境和事务需求制定。
仍是那句,说再多不如自己敲一遍,学习最好的办法便是吸收、转化、输出。下面的章节咱们继续来学习和完结一个又一个项目,敬请期待吧~
版权声明
本文为稀土技能社区首发签约文章,14天内制止转载,14天后未获授权制止转载,侵权必究!