SwiftUI学习08:UIButton按钮的使用

张建 lol

前言

在本章节中,我们将学会如何使用Button按钮这个基本控件

由于Button组件在不同场景下应用不同,我们分成3个部分

  • 简单文字按钮
  • 简单图片按钮
  • 图片+文字按钮

创建按钮

swiftUI中创建按钮代码很简单,代码如下:

1
2
3
4
5
Button { // 操作

} label: { // 按钮样式

}
  • 第一个注释:点击了按钮后,系统执行什么操作
  • 第二个注释:按钮的样式,这个按钮是什么

举个例子:

1
2
3
4
5
6
7
8
9
10
11
struct ContentView: View {
var body: some View {

Button { // 操作
print("登录成功")
} label: { // 按钮样式
Text("微信登录")

}
}
}

Text常用方法

  • .frame:尺寸,.infinity 自适应屏幕宽高
  • .padding:边距,在按钮外面撑开一块面积,上下左右都留边距

用Button实现下面的UI

效果图如下

思路:创建 Button 按钮,并将其 提取 成子视图,插入到 垂直分布中

简单文字按钮

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 按钮视图
struct ButtonView: View {
// 定义变量
var title:String?
var bgColor:Color?

var body: some View {
Button { // 操作
print("\(title!)成功")
} label: { // 按钮样式
Text(title!)
.frame(minWidth: 0,maxWidth: .infinity,minHeight: 0,maxHeight: 40)
.background(bgColor)
.font(.system(size: 14))
.foregroundColor(.white)
.cornerRadius(5)
.padding(.horizontal,50) // 水平居中,左右边距50
}
}
}

简单图片按钮

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 图片按钮
struct ImgButton: View {
var body: some View {
Button {
print("登录成功")
} label: {
Image("wechat")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(minWidth: 0,maxWidth: 50,minHeight: 0,maxHeight: 50)


}
}
}

图片+文字按钮

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 图片文字按钮
struct ImgTextButton: View {
var body: some View {
Button {
print("登录成功")
} label: {
HStack {
Image(systemName: "applelogo")
.font(.title)
Text("Apple登录")
.fontWeight(.semibold)
.font(.title)
}
.frame(minWidth: 0,maxWidth: .infinity,minHeight: 0,maxHeight: 70)
.background(Color(red: 51/255, green: 51/255, blue: 51/255))
.foregroundColor(.white)
.cornerRadius(40)
.padding(.horizontal,20)

}
}
}

最后呈现的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct ContentView: View {
var body: some View {

VStack {
// 微信登录
ButtonView(title: "微信登录",bgColor: .green)
// Apple登录
ButtonView(title: "Apple登录",bgColor: .black)
// 图片按钮
ImgButton()
// 图片+文字按钮
ImgTextButton()
}

}
}
  • Post title:SwiftUI学习08:UIButton按钮的使用
  • Post author:张建
  • Create time:2023-02-20 16:25:53
  • Post link:https://redefine.ohevan.com/2023/02/20/SwiftUI课程/SwiftUI学习08:UIButton按钮的使用/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.