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 - 渐变

渐变是指通过混合两种或多种颜色而产生的视觉效果。渐变效果是从一种颜色到另一种颜色的平滑过渡。它用于填充形状,颜色平滑过渡,例如从浅到深或从深到浅。

它通常用于背景、按钮、图标和其他 UI 组件,以增强组件的视觉外观。SwiftUI 支持三种类型的渐变:线性、径向和角度。

渐变使用各种组件,例如将显示的颜色数组、大小和方向以及渐变类型。 SwiftUI 提供以下四种应用渐变效果的方法 −

  • 渐变
  • 线性渐变
  • 径向渐变
  • 角度渐变
  • 椭圆渐变

渐变

.gradient: 修饰符用于将渐变效果应用于指定组件。

它通常与背景或填充修饰符一起使用。您可以将此修饰符与您想要的任何颜色一起使用。这是应用线性渐变效果的最简单方法。

语法

以下是语法 −

@State private var userData: String = ""

示例

以下 SwiftUI 程序使用渐变修饰符在指定形状中创建并应用渐变。

import SwiftUI
struct ContentView: View {   
   var body: some View {
      VStack{
         Rectangle().fill(.pink.gradient).frame(width: 250, height: 200)
         Circle().fill(.mint.gradient)         
      }      
   }
}
#Preview {
   ContentView()
}

输出

Gradients

线性渐变

在线性渐变中,颜色的过渡以直线形式进行。SwiftUI 提供了一个内置的 LinearGradient() 函数,我们可以使用该函数通过混合两种或多种颜色来创建渐变色效果。

此函数以直线形式用从一个点到另一个点的线性颜色过渡填充区域或组件。过渡可以是水平、垂直、对角线等。

语法

以下是语法 −

LinearGradient(_gradient:AnyGradient, startPoint: UnitPoint, endPoint: UnitPoint)

参数

此方法采用以下参数 −

  • gradient: 它是一个 Gradient 对象,包含一个 Color 对象数组。
  • startPoint: 它表示渐变的起始点。其值可以是:.top、.topLeading、.topTrailing、.bottom、.bottomLeading、.bottomTrailing、.leading、.trailing、.topleading 等。
  • endPoint:表示渐变结束的点。其值可以是:.top、.topLeading、.topTrailing、.bottom、.bottomLeading、.bottomTrailing、.leading、.trailing、.topleading 等。

示例

以下 SwiftUI 程序用于创建线性渐变。

import SwiftUI
struct ContentView: View {   
   var body: some View {
      VStack{
         
         // Two colors
         Rectangle()
            .fill(LinearGradient(colors: [.green, .orange], startPoint: .bottom, endPoint: .leading))
            .frame(width: 170, height: 150)
            .padding(20)
         
         // Multiple colors
         Rectangle()
            .fill(LinearGradient(colors: [.red, .yellow, .green, .indigo], startPoint: .top, endPoint: .bottomTrailing))
            .frame(width: 170, height: 150)
            .padding(20)
         
         // Using gradient
         Rectangle()
            .fill(LinearGradient(gradient: Gradient(colors:[.brown, .mint] ), startPoint: .leading, endPoint: .trailing))
            .frame(width: 170, height: 150)
            .padding(20)
         
         // Setting the coordinates of start and end point
         Rectangle()
            .fill(LinearGradient(colors: [.pink, .blue, .purple], startPoint: UnitPoint(x: 0.4, y: 0.3), endPoint: UnitPoint(x: 0.8, y: 0.7)))
            .frame(width: 170, height: 150)
      }
      
   }
}
#Preview {
   ContentView()
}

输出

Gradients

径向渐变

径向渐变用于创建两种或多种颜色的过渡,其中颜色随着与中心点距离的增加而变化。过渡发生在向外的方向上,并且颜色会缩放以适应起始半径和结束半径之间。

SwiftUI 提供了一个名为 RadialGradient() 的内置函数。此函数用于用渐变色填充给定区域,过渡意味着它会创建一个圆形渐变,其中初始颜色位于中心,最终颜色位于圆的边缘。

如果给定形状的区域大小增加,则 SwiftUI 会自动调整渐变。通过调整RadialGradient()的center、startRadius和endRadius参数的值,我们可以创建不同的效果。

语法

以下是语法 −

RadialGradient(colors:[Color], center: UnitPoint, startRadius: CGFloat, endRadius: CGFloat)

参数

此方法采用以下参数 −

  • colors:它是一个Color对象的数组。
  • center:它代表中心点。
  • startRadius:它代表渐变的半径开始。
  • endRadius:它表示渐变结束的半径。

示例

以下 SwiftUI 程序用于应用径向渐变。

import SwiftUI

struct ContentView: View {   
   var body: some View {
      VStack{         
         // Two colors
         Rectangle()
            .fill(RadialGradient(colors: [.green, .red], center: .center, startRadius: 0, endRadius: 150))
            .frame(width: 170, height: 150)
            .padding(20)
         
         // Multiple colors
         Rectangle()
            .fill(RadialGradient(colors: [.pink, .yellow, .red, .green, .blue, .purple], center: .center, startRadius: 0, endRadius: 150))
            .frame(width: 170, height: 150)
            .padding(20)
         
         // Using gradient
         Rectangle()
            .fill(RadialGradient(gradient: Gradient(colors: [.brown, .orange, .green]), center: .leading, startRadius: 1, endRadius: 150))
            .frame(width: 170, height: 150)
            .padding(20)
         
         Rectangle()
            .fill(RadialGradient(colors: [.pink, .yellow, .red, .green, .blue, .purple], center: .center, startRadius: 0, endRadius: 50))
            .frame(width: 170, height: 150)
      }      
   }
}

#Preview {
   ContentView()
}

输出

Gradients

角度渐变

角度渐变用于创建两种或多种颜色的过渡,其中颜色根据角度而变化。它也被称为圆锥渐变。SwiftUI 提供了一个名为 AngularGradient() 的内置函数。此函数用于使用角度颜色过渡填充给定区域。

与径向渐变一样,角度渐变也以圆形形式显示颜色渐变,但此处颜色围绕中心点辐射。如果给定区域的大小增加,则 SwiftUI 将自动调整渐变中的颜色。

通过调整 AngularGradient() 的 center、startAngle 和 endAngle 参数的值,我们可以创建不同的效果。

语法

以下是语法 −

AngularGradient(colors:[Color], center: UnitPoint, angle: Angle)

参数

此方法采用以下参数 −

  • colors: 它是一个 Color 对象数组。
  • center: 它代表中心点。
  • angle: 它代表渐变的角度开始。

示例

以下 SwiftUI 程序用于应用角度渐变。

import SwiftUI
struct ContentView: View {   
   var body: some View {
      VStack{
         
         // Two colors
         Rectangle()
            .fill(AngularGradient(colors: [.pink, .blue], center: .center))
            .frame(width: 170, height: 150)
            .padding(20)
         
         // Multiple colors
         Rectangle()
            .fill(AngularGradient(colors: [.pink, .yellow, .red, .green, .blue, .purple], center: .center))
            .frame(width: 170, height: 150)
            .padding(20)
         
         Rectangle()
            .fill(AngularGradient(colors: [.red, .green], center: .trailing))
            .frame(width: 170, height: 150)
            .padding(20)
      }      
   }
}

#Preview {
   ContentView()
}

输出

Gradients

椭圆渐变

椭圆渐变用于创建两种或多种颜色的过渡,渐变将以椭圆形状显示。我们可以借助 SwiftUI 支持的 EllipticalGradient() 函数创建一个椭圆渐变。

此函数从给定区域的中心到边缘创建一个椭圆渐变,此处初始颜色将出现在中心,最终颜色将出现在给定形状的边缘。

通过更改 center、startRadiusFraction 和 endRadiusFraction 参数的值,我们可以在椭圆渐变中创建不同的变化。

语法

以下是语法 −

EllipticalGradient(colors:[Color], center: UnitPoint, startRadiusFraction: CGFloat, endRadiusFraction:CGFloat)

参数

此方法采用以下参数−

  • colors: 它是一个 Color 对象数组。
  • center: 它代表中心点。
  • startRadiusFraction: 它代表半径的起始值。这里的值在 0 到 1 之间变化。0 值映射到中心点,而 1 值映射到圆的直径。
  • endRadiusFraction: 它代表半径的结束值。这里的值在 0 到 1 之间变化。0 值映射到中心点,而 1 值映射到圆的直径。

示例

以下 SwiftUI 程序用于应用椭圆渐变。

import SwiftUI
struct ContentView: View {   
   var body: some View {
      VStack{
         Rectangle().fill(.pink.gradient).frame(width: 250, height: 200)
         Circle().fill(.mint.gradient)         
      }      
   }
}
#Preview {
   ContentView()
}

输出

渐变