SwiftUI 控件之Button 按钮初级和高级实用(2020版教程)

SwiftUI 控件之Button 按钮初级和高级实用(2020版教程)

Button是一个非常基本的UI控件,您可以在所有应用中找到该控件。如果您以前学习过iOS编程,则SwiftUI中的Button与UIKit中的UIButton非常相似。它更加灵活和可定制。本文将给您介绍一下几个方面的内容:

  • 如何创建一个简单的按钮并处理用户的选择
  • 如何自定义按钮的背景,填充和字体
  • 如何在按钮上添加边框
  • 如何同时创建带有图像和文本的按钮
  • 如何创建带有渐变背景和阴影的按钮
  • 如何创建全角按钮

代码

import SwiftUI

struct ContentView: View {
    var body: some View {
        Button(action:{
            print("touch")
        }){
            
            Text("Hello World")
                .fontWeight(.bold)
                .font(.title)
                .padding()
                .background(Color.purple)
                .cornerRadius(40)
                .foregroundColor(.white)
                .padding(10)
                .overlay(
                    RoundedRectangle(cornerRadius: 40)
                        .stroke(Color.purple, lineWidth: 5)
            )
            
        }
    }
}

效果

SwiftUI 控件之Button

设置图片按钮

Button(action: {
    print("Delete tapped!")
}) {
    HStack {
        Image(systemName: "trash")
            .font(.title)
        Text("Delete")
            .fontWeight(.semibold)
            .font(.title)
    }
    .padding()
    .foregroundColor(.white)
    .background(Color.red)
    .cornerRadius(40)
}

效果

Button 图片效果有圆角

设置渐变效果

import SwiftUI

struct ContentView: View {
    var body: some View {
      Button(action: {
          print("Delete tapped!")
      }) {
          HStack {
              Image(systemName: "trash")
                  .font(.title)
              Text("Delete")
                  .fontWeight(.semibold)
                  .font(.title)
          }
          .padding()
          .foregroundColor(.white)
          //.background(Color.red)
            .background(LinearGradient(gradient: Gradient(colors: [Color.red, Color.blue]), startPoint: .leading, endPoint: .trailing))
          .cornerRadius(40)
      }
    }
}

SwiftUI Button 设置渐变效果

SwiftUI 自定义颜色集

通过16进制设置颜色


SwiftUI 自定义颜色集 Color Set
import SwiftUI

struct ContentView: View {
    var body: some View {
        Button(action: {
            print("Delete tapped!")
        }) {
            HStack {
                Image(systemName: "trash")
                    .font(.title)
                Text("Delete")
                    .fontWeight(.semibold)
                    .font(.title)
            }
            .padding()
            .foregroundColor(.white)
                //.background(Color.red)
                .background(LinearGradient(gradient: Gradient(colors: [Color("DarkGreen"), Color("LightGreen")]), startPoint: .leading, endPoint: .trailing))
                .cornerRadius(40)
        }
    }
}

SwiftUI 自定义颜色集

SwiftUI 设置控件铺满整个屏幕

import SwiftUI

struct ContentView: View {
    var body: some View {
       Button(action: {
           print("Delete tapped!")
       }) {
           HStack {
               Image(systemName: "trash")
                   .font(.title)
               Text("Delete")
                   .fontWeight(.semibold)
                   .font(.title)
           }
           .frame(minWidth: 0, maxWidth: .infinity)
           .padding()
           .foregroundColor(.white)
           .background(LinearGradient(gradient: Gradient(colors: [Color("DarkGreen"), Color("LightGreen")]), startPoint: .leading, endPoint: .trailing))
           .cornerRadius(40)
       }
    }
}

SwiftUI 设置控件铺满整个屏幕

参考文献

更多SwiftUI教程和代码关注专栏

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • GALA能量环第一招--GOAL设定目标 你每天都会刷牙是因为你的大脑觉得刷牙很重要,而打游戏的人不刷牙是因为他们...
    退休老干部666阅读 3,474评论 0 49
  • 花,一直是我比较想画好,却又老理不清花瓣的画,我想我的问题可能出在对花的结构太过于陌生,平常花看的太少了,...
    胡嘟嘟的画本阅读 1,702评论 2 3
  • 一、文化符号的温暖传承,家—国—时代—生活。 二、句式和段落的构成,刻意练习,输入之高效如何得以保障?尽可能的去输...
    泺伊悦尔阅读 3,701评论 0 0
  • 你还记得最近一次挑战新事物是什么时候么?你是否能回忆起鼓起勇气跨出舒适区的快感 随着年龄的增长,阅历的增加,大部分...
    K妈南卡随笔阅读 3,114评论 0 0

友情链接更多精彩内容