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

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

游戏回合视图

接下来,当用户点击游戏列表的游戏项时,需要进入到游戏详情页。

而对于“投篮项目”来说,一般有3~5个回合,在正式游戏开始之前,会展示一个类似“Round1,Ready Go”的游戏回合页面,然后才是正式游戏详情页。

image.png

为此,我们需要创建一个新的SwiftUI页面来承载它,在Xcode左侧视图工具栏中新建一个SwiftUI文件,命名为GameDetailView,如下图所示:

image.png

在“游戏回合”视图中,我们可以看到几个页面元素:游戏回合数(Round1)、游戏规则(5米)、游戏规则说明(距离篮筐)、游戏结果(投中:0)。

由于上述的参数会随着游戏更新内容,因此需要声明其变量进行存储,如下代码所示:


@State var roundNum:Int = 1
@State var distanceNum:Int = 5
@State var gameGoal:Int = 0

上述代码中,我们声明了3个变量:roundNum游戏回合数、distanceNum篮筐距离、gameGoal单回合游戏得分。这里由于在后续要使用到数值计算,因此声明的变量都是Int类型。

紧接着,我们来分析构建页面,如下代码所示:

// 游戏回合
func preStartView() -> some View {
  VStack {
      Spacer()
      VStack(alignment: .center, spacing: 40) {
        Text("Round" + String(roundNum))
        .font(.system(size: 48, design: .rounded))
        .bold()
        .foregroundColor(.white)
        VStack(alignment: .center, spacing: 20) {
          Text(String(distanceNum) + "米")
          .font(.system(size: 24))
          .foregroundColor(.white)
          .bold()
          Text("距离篮筐")
          .font(.system(size: 17))
          .foregroundColor(.white)
        }
      }
      Spacer()
      Spacer()
      Text("投中:  " + String(gameGoal))
      .font(.system(size: 17))
      .foregroundColor(.white)
    }
}

上述代码中,我们创建了一个新的视图preStartView

分析下页面元素,Text回合数文字为主要文字,使用48号圆形字体样式,并设置bold加粗,foregroundColor文字填充颜色为白色,其余文字基本修饰符类型。

这里科普一个知识点。

由于声明的变量是Int类型,而Text文字需要键入String类型的文本,因此需要将Int类型转换为String类型。SwiftUI对于类型转换可以直接使用类型包裹进行转换,示例:String(roundNum),如此便可以直接将roundNum游戏回合数转换为String类型的参数。

另外,我们可以使用“+”对字符串进行拼接,组成一个新的字符串,示例:

"I"+"Love"+"You" 结果为 "ILoveYou"

回归正题,文字部分也是使用VStack垂直布局视图进行包裹元素,这里的编程思想是“由中间向两边散开”,即相距离较近的元素可以先组合成一个容器,再和外边的容器进行组合,便于设置视图元素之间的间距。

完成好单个preStartView视图后,我们在Body中展示它,如下代码所示:

ZStack {
  Color(.black).edgesIgnoringSafeArea(.all)
  preStartView()
}

image.png


相关文章
|
存储
实战编程·刻在男人DNA里的浪漫,空气投篮(二)(1)
实战编程·刻在男人DNA里的浪漫,空气投篮(二)
65 1
|
传感器 前端开发 iOS开发
实战编程·刻在男人DNA里的浪漫,空气投篮(二)(4)
实战编程·刻在男人DNA里的浪漫,空气投篮(二)
73 1
|
容器
实战编程·刻在男人DNA里的浪漫,空气投篮(二)(3)
实战编程·刻在男人DNA里的浪漫,空气投篮(二)
68 0
|
安全 iOS开发 UED
实战编程·刻在男人DNA里的浪漫,空气投篮(一)
实战编程·刻在男人DNA里的浪漫,空气投篮(一)
104 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.
647 0
|
Perl 关系型数据库 RDS
[家里蹲大学数学杂志]第418期南开大学2013年实变函数期末考试试题参考解答
  1. 设 $A$ 为非可数的实数集合. 证明: 存在整数 $n$ 使得 $A\cap [n,n+1]$ 为可数集. ($15'$)   证明: 用反证法. 若 $$\bex A\cap [n,n+1]\mbox{ 可数,}\quad \forall\ n\in\bbZ.
1141 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|$ 足够小时有唯一连续解.
1058 0
|
资源调度 Perl
[家里蹲大学数学杂志]第328期詹兴致矩阵论习题参考解答
说明:  1. 大部分是自己做的, 少部分是参考文献做的, 还有几个直接给出参考文献. 2. 如果您有啥好的想法, 好的解答, 热切地欢迎您告知我, 或者在相应的习题解答网页上回复. 哪里有错误, 也盼望您指出.
1364 0
|
关系型数据库 Perl RDS
[家里蹲大学数学杂志]第322期赣南师范学院数学竞赛培训第11套模拟试卷
  数学分析部分     1. 已知函数 $f(x)=\ln x-ax$, 其中 $a$ 为常数. 如果 $f(x)$ 有两个零点 $x_1,x_2$. 试证: $x_1x_2>e^2$.
694 0
[家里蹲大学数学杂志]第240期钟玉泉编复变函数总复习纲要
第240期_钟玉泉编复变函数总复习纲要   下载后请自行打印、预览或学习, 不要到处传播于网络, 更不要用于商业用途.
807 0

热门文章

最新文章

下一篇
开通oss服务