嗨,SwiftUI~

栏目: 编程工具 · IOS · 发布时间: 4年前

内容简介:打开Xcode,单击选择iOS菜单下的的输入"Landmarks"(做一个包含各种地标元素的地标集项目)作为项目名称,选中

打开Xcode,单击 Create a new Xcode project ,或选择 File > New > Project

嗨,SwiftUI~

步骤2

选择iOS菜单下的的 Single View App 模板,然后单击 Next

嗨,SwiftUI~

步骤3

输入"Landmarks"(做一个包含各种地标元素的地标集项目)作为项目名称,选中 Use SwiftUI 复选框, Next ,选择在Mac上保存该项目的位置。

嗨,SwiftUI~

步骤4

在Xcode左手边的文件导航器中,单击选择 ContentView.swift

默认情况下,SwiftUI会声明两个结构体,第一个结构体遵循 View 协议——用来描述视图的内容和布局;第二个结构体声明该视图的预览方式。

/// ContentView.swift

import SwiftUI

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

struct ContentView_Preview: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
复制代码

预览: :arrow_down:

嗨,SwiftUI~

步骤5

在预览画布中,单击 Resume 按钮以显示预览。

如果画布不可见,选择 Editor > Editor and Canvas 以显示它。

嗨,SwiftUI~

步骤6

在代码内body属性里,将"Hello World"更改为"Hello SwiftUI"。

更改body内视图的属性,预览也将实时更新。

/// ContentView.swift

import SwiftUI

struct ContentView: View {
    var body: some View {
        /// "这里更改为Hello SwiftUI!,即可在预览中实时显示。"
        Text("Hello SwiftUI!")
    }
}

struct ContentView_Preview: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
复制代码

预览: :arrow_down:

嗨,SwiftUI~

二、自定义文本视图

更改UI的方式有两种:1.改代码;2.改属性检查器选项。

无论使用哪种方式,代码都会保持更新。

接下来,您将使用属性检查器自定义TextView。

步骤1

在预览画布中,按住 Command 键的同时单击"Hello SwiftUI"文本,会弹出可选菜单,点击 Inspect... 此选项即可打开文本视图的属性检查器。

注:不同的View,对应的不同的属性检查器内容。

嗨,SwiftUI~

步骤2

如图,将文本更改为"Turtle Rock"(地名:中文名叫昂装,位于中国香港),这是将在应用程序中显示的第一个地标。

嗨,SwiftUI~

步骤3

如图将字体改为"Title"

嗨,SwiftUI~

步骤4

Text 添加代码 .color(.green) ,将文本改为绿色。

SwiftUI中, .color(.green) 类似的点方法也叫做 modifier (叫啥名不重要),调用后返回该视图本身,因此类似链式编程,可不停往后面追加所谓的 modifier

/// ContentView.swift

import SwiftUI

struct ContentView: View {
    var body: some View {
        Text("Turtle Rock")
            .font(.title)
            /// "步骤4: 设置颜色为绿色"
            .color(.green)
    }
}

struct ContentView_Preview: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

复制代码

预览: :arrow_down:

嗨,SwiftUI~

:pray:代码即视图,视图即代码 :pray:。即使使用属性检查器更改或删除属性时,Xcode也会立即更新代码以匹配。看步骤5 :arrow_down:

步骤5

按住 Command 键并单击"Turtle Rock"文本视图,点击 Inspect... 进入其属性检查器,单击 Color 右侧下拉菜单并选择"Inherited"(继承系统默认值的意思),效果就是把文本颜色再回原来的黑色。

嗨,SwiftUI~

步骤6

此时,Xcode会自动删除 .color(.green) 这行代码以响应上面的更改。

/// ContentView.swift

import SwiftUI

struct ContentView: View {
    var body: some View {
        Text("Turtle Rock")
            .font(.title)
            /// "步骤6: Xcode自动删除原来设置颜色的代码,以响应属性检查器的更改"
    }
}

struct ContentView_Preview: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
复制代码

预览: :arrow_down:

嗨,SwiftUI~

三、使用Stacks布局View

在上一节中,创建了地标名字的文本视图,接着我们继续添加包含该地标详细信息(如该地点著名的公园名称和所在州)的文本视图。

创建SwiftUI的视图时,我们可以在视图的body属性中描述其内容、布局和行为,但是body内只返回单个视图。我们可以将多个视图组合放到 Stack 中。

Stack :可以理解为存放View的容器,扔进去的View们由 Stack 摆布,摆布的方式有View们横着排、竖着排和从后往前排等

HStack:全称Horizontal Stack,水平排列,也就是横着排

VStack:全称Vertical Stack,垂直排列,也就是竖着排

本节用 Stack 干两个事儿:

1.公园名称和所在州名称对应的俩文本视图横着排

2.地标名字的文本视图搁1上面,如图

嗨,SwiftUI~

属性检查器除了可以在预览画布里展开,代码中同样奏效:

步骤1

按住 Commond 键并单击 Text("Turtle Rock") 代码行,选择 Embed in VStack

嗨,SwiftUI~

接下来,拖一个文本视图添加到这个 VStack 中。

步骤2

单击Xcode右上角的 + 按钮,然后将 Text 视图拖动到代码中 Turtle Rock 整个文本视图后面的位置。

嗨,SwiftUI~

步骤3

将拖进来的文本视图的文本替换为"Joshua Tree National Park"。

/// ContentView.swift

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack {
            Text("Turtle Rock")
                .font(.title)
            /// "步骤3: 拖进来,换个文本"
            Text("Joshua Tree National Park")
        }
    }
}

struct ContentView_Preview: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
复制代码

预览: :arrow_down:

嗨,SwiftUI~

自定义位置以匹配所需布局。

步骤4

字体设置为".subheadline"。

/// ContentView.swift

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack {
            Text("Turtle Rock")
                .font(.title)
            Text("Joshua Tree National Park")
                /// "步骤4: 设置字体为 subheadline"
                .font(.subheadline)
        }
    }
}

struct ContentView_Preview: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
复制代码

预览: :arrow_down:

嗨,SwiftUI~

步骤5

设置 VStack 对齐方式为左对齐。

默认情况下, VStack 沿视图的中轴线对齐。

/// ContentView.swift

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack(alignment: .leading) { // "步骤5: 设置对齐方式为左对齐"
            Text("Turtle Rock")
                .font(.title)
            Text("Joshua Tree National Park")
                .font(.subheadline)
        }
    }
}

struct ContentView_Preview: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
复制代码

预览: :arrow_down:

嗨,SwiftUI~

接下来,在"Joshua Tree National Park"文本右侧添加另一个文本视图。

步骤6

打开"Joshua Tree National Park"的属性检查器,然后选择 Embed in hstack

嗨,SwiftUI~

步骤7

更改文本为"California",然后将字体设置为"subheadline"。

/// ContentView.swift

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack(alignment: .leading) {
            Text("Turtle Rock")
                .font(.title)
            HStack {
                Text("Joshua Tree National Park")
                    .font(.subheadline)
                /// "步骤7: 和上一Text一同装进HStack,并设置文本和字体"
                Text("California")
                    .font(.subheadline)
            }
        }
    }
}

struct ContentView_Preview: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
复制代码

预览: :arrow_down:

嗨,SwiftUI~

步骤8

让视图布局在整个屏幕宽度上,插入 Spacer() ,如下。

默认情况下,文本内容宽度决定文本视图区域,使用 Spacer() 可撑开当前 Stack 内所有视图,使View们充分利用该 Stack 的所有空间。

/// ContentView.swift

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack(alignment: .leading) {
            Text("Turtle Rock")
                .font(.title)
            HStack {
                Text("Joshua Tree National Park")
                    .font(.subheadline)
                Spacer() // "步骤8: 添加占位空间"
                Text("California")
                    .font(.subheadline)
            }
        }
    }
}

struct ContentView_Preview: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
复制代码

预览: :arrow_down:

嗨,SwiftUI~

步骤9

最后,使用 .padding() 方法给整个 VStack 一点喘息的空间。

/// ContentView.swift

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack(alignment: .leading) {
            Text("Turtle Rock")
                .font(.title)
            HStack {
                Text("Joshua Tree National Park")
                    .font(.subheadline)
                Spacer()
                Text("California")
                    .font(.subheadline)
            }
        }
        .padding()  // "步骤9: 设置默认内边距,使得VStack内部视图起始点不再死死地贴近边缘"
    }
}

struct ContentView_Preview: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
复制代码

预览: :arrow_down:

嗨,SwiftUI~

四、创建自定义图像

设置好地标名称和详情的各种文本视图后,接下来来张图意思一下。

不再在上面文件中添加新代码,我们寻另一处实现带有遮罩、边框和阴影效果的图片 View。

步骤1

在项目的资源文件夹中找到"turtlerock.png",将其拖到"Resources"目录中的"AppIcon"位置。

嗨,SwiftUI~

接下来,为自定义图像视图创建一个新的".swift"文件。

步骤2

选择 File > New > File 打开模板选择器,选择 User Interface 分类下的 SwiftUI View ,然后单击 Next 。将文件命名为"CircleImage.swift",然后单击 Create 完成创建。

嗨,SwiftUI~

您可以插入图像并修改其显示以匹配所需的设计。

步骤3

使用 Image(_:) 方法初始化图像,替换掉默认的 Text 视图。

/// CircleImage.swift

import SwiftUI

struct CircleImage: View {
    var body: some View {
        /// "步骤3"
        Image("turtlerock")
    }
}

struct CircleImage_Preview: PreviewProvider {
    static var previews: some View {
        CircleImage()
    }
}
复制代码

预览: :arrow_down:

嗨,SwiftUI~

步骤4

使用 .clipShape(Circle()) 方法将图片裁成圆形。

Circle(),作为圆圈可以用作遮罩,也可以在圈内填充颜色来用作单独的圆形视图。

/// CircleImage.swift

import SwiftUI

struct CircleImage: View {
    var body: some View {
        Image("turtlerock")
            /// "步骤4: 搞成圆的"
            .clipShape(Circle())
    }
}

struct CircleImage_Preview: PreviewProvider {
    static var previews: some View {
        CircleImage()
    }
}
复制代码

预览: :arrow_down:

嗨,SwiftUI~

步骤5

创建一个灰色的圆圈作为边框,然后将其盖在上面的圆形图片上。

/// CircleImage.swift

import SwiftUI

struct CircleImage: View {
    var body: some View {
        Image("turtlerock")
            .clipShape(Circle())
            /// "步骤5: 盖一个圆圈,灰色的,宽度为4"
            .overlay(
                Circle().stroke(Color.gray, lineWidth: 4))
    }
}

struct CircleImage_Preview: PreviewProvider {
    static var previews: some View {
        CircleImage()
    }
}
复制代码

预览: :arrow_down:

嗨,SwiftUI~

步骤6

接下来,添加半径为10点的阴影。

/// CircleImage.swift

import SwiftUI

struct CircleImage: View {
    var body: some View {
        Image("turtlerock")
            .clipShape(Circle())
            .overlay(
                Circle().stroke(Color.gray, lineWidth: 4))
            /// "步骤6: 设置阴影"
            .shadow(radius: 10)
    }
}

struct CircleImage_Preview: PreviewProvider {
    static var previews: some View {
        CircleImage()
    }
}
复制代码

预览: :arrow_down:

嗨,SwiftUI~

步骤7

将步骤5里的边框颜色切换为白色,收工。

/// CircleImage.swift

import SwiftUI

struct CircleImage: View {
    var body: some View {
        Image("turtlerock")
            .clipShape(Circle())
            .overlay(
                Circle().stroke(Color.white, lineWidth: 4)) // "步骤7: 切换为白色"
            .shadow(radius: 10)
    }
}

struct CircleImage_Preview: PreviewProvider {
    static var previews: some View {
        CircleImage()
    }
}
复制代码

预览: :arrow_down:

嗨,SwiftUI~

以上所述就是小编给大家介绍的《嗨,SwiftUI~》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

谷歌时代的柏拉图

谷歌时代的柏拉图

[美] 丽贝卡·戈尔茨坦 / 李鹏程 / 中信出版集团·新思文化 / 2017-12-10 / 69.00元

我愿意用我所有的科技去换取和苏格拉底相处的一个下午。 ——史蒂夫•乔布斯 谷歌时代,科技昌明,众声喧哗,哲学提出的许多问题,科学似乎都已经给出了答案。若是如此,为什么我们今天还需要哲学?这个由古希腊城邦时代的哲人苏格拉底和柏拉图开创的学科,真的过时了吗? 已经2400岁 的柏拉图对此有话要说。哲学家兼小说家、美国国家人文奖章获得者戈尔茨坦史海钩沉,从经典著作中复活了柏拉图,让他来......一起来看看 《谷歌时代的柏拉图》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具