SwiftUI 教程

SwiftUI - 主页 SwiftUI - 概览 SwiftUI 与 UIkit

SwiftUI 环境

SwiftUI - 环境设置 SwiftUI - 基本组件 SwiftUI - 构建第一个应用程序

SwiftUI 视图

SwiftUI - 视图 SwiftUI - 自定义文本视图 SwiftUI - 自定义图像视图 SwiftUI - 堆栈

SwiftUI 绘制形状

SwiftUI - 形状 SwiftUI - 绘制线条 SwiftUI - 绘制矩形 SwiftUI - 绘制圆角矩形 SwiftUI - 绘制三角形 SwiftUI - 绘制圆形 SwiftUI - 绘制星形 SwiftUI - 绘制多边形 SwiftUI - 绘制饼图 SwiftUI - 使用内置形状

SwiftUI - 文本

SwiftUI - 文本视图 SwiftUI - 文本输入和输出

SwiftUI - 颜色

SwiftUI - 颜色 SwiftUI - 颜色选择器 SwiftUI - 渐变 SwiftUI - 调整颜色

SwiftUI - 效果

SwiftUI - 效果 SwiftUI - 混合效果 SwiftUI - BLur 效果 SwiftUI - 阴影效果 SwiftUI - 悬停效果

SwiftUI - 动画

SwiftUI - 动画 SwiftUI - 创建动画 SwiftUI - 创建显式动画 SwiftUI - 多个动画 SwiftUI - 过渡 SwiftUI - 不对称过渡 SwiftUI - 自定义过渡

SwiftUI - 图像

SwiftUI - 图像 SwiftUI - 图像作为背景 SwiftUI - 旋转图像 SwiftUI - 媒体

SwiftUI - 视图布局

SwiftUI - 视图布局 SwiftUI - 视图大小 SwiftUI - 视图间距 SwiftUI - 视图填充

SwiftUI - UI 控件

SwiftUI - UI 控件 SwiftUI - 按钮 SwiftUI - 复选框 SwiftUI - 菜单栏 SwiftUI - 工具栏 SwiftUI - 搜索栏 SwiftUI - 文本字段 SwiftUI - 滑块 SwiftUI - 切换 SwiftUI - 选择器 SwiftUI - 菜单

SwiftUI - 列表 &表格

SwiftUI - 列表 SwiftUI - 静态列表 SwiftUI - 动态列表 SwiftUI - 自定义列表 SwiftUI - 表格

SwiftUI - 表单

SwiftUI - 表单 SwiftUI - 在部分中拆分表单

SwiftUI - 事件处理

SwiftUI - 事件处理 SwiftUI - 手势 SwiftUI - 剪贴板 SwiftUI - 拖放 SwiftUI - 焦点 SwiftUI - 警报

SwiftUI - 杂项

SwiftUI - 容器 SwiftUI - 导航 SwiftUI - 通知 SwiftUI - 跨平台 UI SwiftUI - 数据 SwiftUI - 可访问性

SwiftUI - 框架集成

SwiftUI - 框架集成 SwiftUI - 与 UIKit 交互 SwiftUI - 创建 macOS 应用

SwiftUI 有用资源

SwiftUI - 有用资源 SwiftUI - 讨论


SwiftUI - 按钮

SwiftUI 中的按钮视图是最强大且最常用的 UI 控件。当用户点击或单击按钮控件时,按钮控件会执行指定的操作。或者我们可以说,当用户通过单击按钮与其交互时,按钮会触发操作。

它可用于执行各种操作,例如提交表单、启动导航、启用/禁用或任何用户定义的操作。我们还可以在任何容器(例如列表、菜单等)内使用按钮。因此,在本章中,我们将讨论如何创建和设置按钮的样式。

在 SwiftUI 中创建按钮

按钮用于在我们单击时执行操作。它是 SwiftUI 中最通用的 UI 控件,因为我们可以对其进行各种样式设置,以便它可以轻松适应 UI 设计。按钮可以是带有标签的文本、图像或形状。

因此,为了创建按钮,SwiftUI 提供了一个预定义的方法或修饰符名称 Button()。它创建一个带有操作的按钮。因此,每当我们点击它时,它就会触发该操作。

语法

以下是按钮的基本语法 −

Button(
   _ title key: LocalizedStringKey,
   action: @escaping @MainActor () -> Void
)

参数

此视图使用以下参数 −

  • titleKey:表示按钮的标题。

  • action:表示用户点击按钮时按钮将执行的操作。

Button() 重载方法

以下是 Button − 的一些重载方法

Button 说明
Button(action()->, label:()->Label) 用于创建带有自定义标签的按钮。
Button(_:action:) 用于创建一个按钮,其标签由给定的字符串生成。
Button(_:image:action:) 用于创建一个按钮,其标签由字符串和图像生成。
Button(_:systemImage:action:) 用于创建一个按钮,其标签由字符串和系统图像生成。
Button(_:role:action:) 用于创建一个具有指定角色的按钮,按钮的标签由字符串生成。

示例 1

下面的 SwiftUI 程序创建一个简单的按钮。

import SwiftUI
struct ContentView: View {
   var body: some View {
      VStack{
         Button("Submit", action: submit).font(.largeTitle)
      }
   }
   func submit(){
      print("Form is submitted")
   }
}
#Preview {
   ContentView()
}

输出

Button

示例 2

以下 SwiftUI 程序用于创建不同类型的按钮。

import SwiftUI

struct ContentView: View {
   var body: some View {
      VStack{
         
         // 带有操作的简单按钮
         Button("Submit", action: submit)
            .font(.largeTitle)
         // 具有内联操作和标签的 Nutton
         Button(action: {print("Submitted")}, label: {
            Text("Button").font(.largeTitle)
         })
         
         // Button with role
         Button("Cancel", role: .cancel, action: {print("Deleted")}).font(.largeTitle)
      }
   }
   func submit(){
      print("Form is submitted")
   }
}
#Preview {
   ContentView()
}

输出

Button

在 SwiftUI 中设置按钮样式

SwiftUI 提供了一个名为 buttonStyle() 的预定义修饰符来设置按钮样式。此修饰符允许用户应用自定义样式和标准样式来增强指定按钮的外观。我们还可以创建自定义样式来设置按钮样式;这些自定义样式应符合 ButtonStyle 协议。

语法

以下是语法 −

func buttonStyle(Style)

示例

以下 SwiftUI 程序用于创建具有自定义样式的按钮。

import SwiftUI

// 按钮的自定义样式
struct customStyle: ButtonStyle{
   func makeBody(configuration: Configuration) -> some View {
      configuration.label
         .background(configuration.isPressed ? .yellow : .red)
         .foregroundStyle(.white)
         .clipShape(Capsule())
         .padding()
         .shadow(radius: 14)
         .scaleEffect(configuration.isPressed ? 0.99 : 1.0)
   }
}
struct ContentView: View {
   var body: some View {
      VStack{
         
         // 带有操作的简单按钮
         Button("Submit", action: submit)
            .font(.largeTitle)
         
         // 按钮风格
         Button("Submit", action: submit)
            .font(.largeTitle)
            .buttonStyle(customStyle())
      }
   }
   func submit(){
      print("Form is submitted")
   }
}
#Preview {
   ContentView()
}

输出

Button

SwiftUI 中的带图像的按钮

在 SwiftUI 中,我们可以将图像用作按钮。我们可以使用任何类型的图像作为按钮,例如 jpeg、png 等,我们还可以创建图标作为按钮,或者可以使用 SF 符号图标作为按钮。

示例 1

以下 SwiftUI 程序用于创建带图像的按钮。

import SwiftUI

struct ContentView: View {
   var body: some View {
      VStack{
         
         // 图像作为按钮
         Button(action: {print("Display")}){
            Image("Image").frame(width: 150).clipShape(Circle())
         }
      }
   }

#Preview {
   ContentView()
}

输出

Button

示例 2

以下 SwiftUI 程序将图标创建为按钮。

import SwiftUI
struct ContentView: View {
   var body: some View {
      VStack{
         
         // SF 符号图标作为按钮
         Button(action: {print("Display")}){
            Image(systemName: "doc.fill").font(.largeTitle)
         }
         
         // SF 符号图标作为带有文本的按钮
         Button(action: {print("Display")}){
            HStack{
               Image(systemName: "doc.fill").font(.largeTitle)
               Text("Open")
               
            }
         }
      }
   }
}
#Preview {
   ContentView()
}

输出

Button

SwiftUI 中的动画按钮

在 SwiftUI 中,我们还可以为按钮添加动画。要创建动画按钮,我们必须使用 .animation() 修饰符应用动画。此 animation() 修饰符在给定按钮上应用不同类型的动画,例如 easeIn、easeOut 等。

示例

以下 SwiftUI 程序用于创建动画按钮。

import SwiftUI
struct ContentView: View {
   @State private var isPressed = false
   var body: some View {
      VStack{
         Button("Submit", action: submit)
            .font(.largeTitle)
            .scaleEffect(isPressed ? 0.8 : 1.2)
            .animation(.easeIn, value: isPressed)
      }
   }
   func submit(){
      print("Form is submitted")
   }
}

#Preview {
   ContentView()
}

输出

Button