实战编程·刻在男人DNA里的浪漫,空气投篮(二)(4)

简介: 实战编程·刻在男人DNA里的浪漫,空气投篮(二)

如此,当我们点击“投篮”的游戏项时,就会跳转到GameDetailView游戏详情页。

我们来到GameDetailView游戏详情页,由于当前GameDetailView游戏详情页的isReady参数变量为false,因此GameDetailView游戏详情页会展示preStartView游戏回合视图。

我们希望的交互是preStartView游戏回合视图在显示2秒后自动到playGameView游戏中视图。

这里在页面载入时增加多一个方法,如下代码所示:

ZStack {
  Color(.black).edgesIgnoringSafeArea(.all)
  if isReady {
    playGameView()
  } else {
    preStartView()
  }
}
.onAppear(){
  DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
        self.isReady = true
      }
}

上述代码中,我们在GameDetailView游戏详情页onAppear展示时添加了一个在主线程上的操作,即基于当前时间2秒钟后,切换isReady状态。

如此,我们便实现了在用户进入GameDetailView游戏详情页时,先展示preStartView游戏回合视图,再展示preStartView游戏中视图了。

进入操作有了,最后是返回操作。

原有的返回按钮太丑了,我们可以自定义一个返回按钮,如下代码所示:

// 返回上一页
func backButton() -> some View {
  Button(action: {
    }) {
      Image(systemName: "chevron.left.circle")
      .font(.system(size: 17))
      .foregroundColor(.white)
    }
}
并将它加到GameDetailView游戏详情页视图中,如下代码所示:
scss
复制代码
ZStack {
  Color(.black).edgesIgnoringSafeArea(.all)
  if isReady {
    playGameView()
  } else {
    preStartView()
  }
}
.navigationBarBackButtonHidden(true)
.navigationBarItems(leading: backButton())

image.png

返回的操作交互也很简单,我们可以调用SwiftUI的通用返回方法,如下代码所示:

@Environment(.presentationMode) var mode

最后在点击backButton返回按钮的时候使用返回方法,如下代码所示:

self.mode.wrappedValue.dismiss()

image.png

本章预览

完成后,我们回到ContentView预览下整体项目。

本章小结

恭喜你,完成了本章的所有内容!

在本章中,我们构建了游戏详情页的视图,并完成了详情页的两种状态页面,准备开始游戏和游戏中的状态页面,还实现了从首页跳转到详情页、返回首页的全过程。

空气投篮项目iOS端整体的交互内容基本就到这里了,接下来我们将继续使用MVVM开发模式调整iOS端的内容,后面还会完成Watch端的页面及其交互。

最后如果条件成熟,我们将调用Apple提供的各种传感器来完成真实的交互体验。

请保持期待吧~

相关文章
|
存储
实战编程·刻在男人DNA里的浪漫,空气投篮(二)(1)
实战编程·刻在男人DNA里的浪漫,空气投篮(二)
61 1
|
存储 Go iOS开发
实战编程·刻在男人DNA里的浪漫,空气投篮(二)(2)
实战编程·刻在男人DNA里的浪漫,空气投篮(二)
61 1
|
容器
实战编程·刻在男人DNA里的浪漫,空气投篮(二)(3)
实战编程·刻在男人DNA里的浪漫,空气投篮(二)
58 0
|
安全 iOS开发 UED
实战编程·刻在男人DNA里的浪漫,空气投篮(一)
实战编程·刻在男人DNA里的浪漫,空气投篮(一)
91 0
|
机器学习/深度学习 存储 缓存
蓝桥杯十大常见天阶功法——音之呼吸.肆之型.模拟
蓝桥杯十大常见天阶功法——音之呼吸.肆之型.模拟
154 0
蓝桥杯十大常见天阶功法——音之呼吸.肆之型.模拟
|
Perl 定位技术
家里蹲大学数学杂志第7卷第481期一道实分析题目参考解答
(1) Define what it means for a set $A\subset \bbR^2$ to have zero content. (2) Prove the following result: Let $g:[a,b]\to\bbR$ be bounded and integrable.
641 0
|
Perl
[家里蹲大学数学杂志]第410期定积分难题
  1. (1). 设 $x\geq 0$, $n$ 为自然数, 证明: $$\bex x^n\geq n(x-1)+1; \eex$$ (2). $\forall\ n$, 求证: $$\bex \int_0^{1+\frac{2}{\sqrt{n}}}x^n\rd x>2; \eex$$ (3).
819 0
|
关系型数据库 RDS Perl
[家里蹲大学数学杂志]第388期一套泛函分析期末试题参考解答
  1. ($20$ 分) 证明非线性积分方程 $$\bex x(t)+\lm \int_a^b K(t,s,x(s))\rd s=y(t),\quad \forall\ t\in [a,b] \eex$$ 在 $|\lm|$ 足够小时有唯一连续解.
1050 0