实战编程·刻在男人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


相关文章
|
5月前
|
传感器 前端开发 iOS开发
实战编程·刻在男人DNA里的浪漫,空气投篮(二)(4)
实战编程·刻在男人DNA里的浪漫,空气投篮(二)
30 1
|
5月前
|
存储
实战编程·刻在男人DNA里的浪漫,空气投篮(二)(1)
实战编程·刻在男人DNA里的浪漫,空气投篮(二)
30 1
|
5月前
|
容器
实战编程·刻在男人DNA里的浪漫,空气投篮(二)(3)
实战编程·刻在男人DNA里的浪漫,空气投篮(二)
24 0
|
5月前
|
安全 iOS开发 UED
实战编程·刻在男人DNA里的浪漫,空气投篮(一)
实战编程·刻在男人DNA里的浪漫,空气投篮(一)
45 0
|
6月前
|
存储
星际争霸之小霸王之小蜜蜂(八)--蓝皮鼠和大脸猫
星际争霸之小霸王之小蜜蜂(八)--蓝皮鼠和大脸猫
|
6月前
|
Python
星际争霸之小霸王之小蜜蜂(十二)--猫有九条命
星际争霸之小霸王之小蜜蜂(十二)--猫有九条命
|
10月前
|
JavaScript 前端开发 图形学
程序人生 | 与足球共舞的火柴人(致敬格拉利什,赋予足球更深的意义)
程序人生 | 与足球共舞的火柴人(致敬格拉利什,赋予足球更深的意义)
114 0
|
数据采集 传感器 人工智能
拆车、炸机、毁魔方,这个疯狂的算法竞赛少年目的是这样的…
拆车、炸机、毁魔方,这个疯狂的算法竞赛少年目的是这样的…
拆车、炸机、毁魔方,这个疯狂的算法竞赛少年目的是这样的…
|
Java 新能源
用“鸟屎”调侃同行,石墨烯真的是加个“屎”都能发论文?
用“鸟屎”调侃同行,石墨烯真的是加个“屎”都能发论文?
239 0