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 中绘制三角形

SwiftUI 不提供内置三角形,如矩形和圆形,但我们仍然可以通过使用 Path 结构或使用 Shape 协议来绘制自定义三角形。

这两种方法都可以绘制满足应用程序需求的三角形设计。现在我们将逐步学习如何使用这两种方法创建三角形。

使用 Path 结构在 SwiftUI 中绘制三角形的步骤

按照下面给出的步骤在 SwiftUI 中使用 Path 结构绘制三角形−

步骤 1:初始化 Path

首先初始化 Path 并在闭包中提供详细说明。它将帮助我们通过连接一系列点和线来创建三角形。

Path() {}

步骤 2:移动到指定坐标

现在我们使用 move(to:) 方法移动到三角形开始绘制的原点。

Path(){ 
   xPath in
      xPath.move(to: CGPoint(x: 250, y: 100))
}

步骤 3:绘制三角形

现在,如果我们使用 .fill() 和 .closeSubpath() 方法,我们将调用 addLine(to:) 方法两次,因为它们会自动将当前点连接到原点。否则,我们将调用 addLine(to:) 方法三次,以绘制三角形的三条连接线。

Path(){ 
   xPath in
      xPath.move(to: CGPoint(x: 250, y: 100))
      xPath.addLine(to: CGPoint(x: 350, y: 250))
      xPath.addLine(to: CGPoint(x: 150, y: 250))
}

步骤 4:填充颜色

默认情况下,三角形以黑色创建,因此使用 .fill 修饰符,我们可以根据自己的选择更改三角形的颜色。

Path(){ 
   xPath in
      xPath.move(to: CGPoint(x: 250, y: 100))
      xPath.addLine(to: CGPoint(x: 350, y: 250))
      xPath.addLine(to: CGPoint(x: 150, y: 250))
}.fill(Color.teal)

示例 1

以下 SwiftUI 程序用于使用 Path 结构绘制三角形。

import SwiftUI

struct ContentView: View {
   var body: some View {
      Path(){ 
	     xPath in
            xPath.move(to: CGPoint(x: 250, y: 100))
            xPath.addLine(to: CGPoint(x: 350, y: 250))
            xPath.addLine(to: CGPoint(x: 150, y: 250))
      }.fill(Color.teal)
   }
}
#Preview {
   ContentView()
}

输出

绘制三角形

示例 2

以下 SwiftUI 程序用于自定义三角形。

import SwiftUI

struct ContentView: View {
   var body: some View {
      Path { xPath in
         xPath.move(to: CGPoint(x: 300, y: 100))
         xPath.addLine(to: CGPoint(x: 350, y: 300))
         xPath.addLine(to: CGPoint(x: 150, y: 300))
         xPath.closeSubpath()
      }.stroke(Color.yellow, lineWidth: 4)
      .shadow(radius: 10)
   }
}

#Preview {
   ContentView()
}

输出

绘制三角形

使用 Shape 协议在 SwiftUI 中绘制三角形的步骤

按照以下步骤在 SwiftUI 中使用 Shape 协议绘制三角形 −

步骤 1 − 定义自定义形状

要绘制自定义三角形,我们需要创建一个符合 Shape 协议的结构。在此结构中,我们将定义如何创建三角形以及 path(in:) 方法。

struct Triangle : Shape{}

步骤 2:创建视图

现在我们在 SwiftUI 视图中使用自定义三角形。它将显示自定义三角形的外观。

func path(
   in rect: CGRect) -> Path {
      var xpath = Path()
      xpath.move(to: CGPoint(x: rect.minX, y: rect.maxY))
      xpath.addLine(to: CGPoint(x: rect.midX, y: rect.minY))
      xpath.addLine(to: CGPoint(x: rect.maxX, y: rect.maxY))
      xpath.addLine(to: CGPoint(x: rect.minX, y: rect.maxY))
      return xpath
}

步骤 3:添加其他自定义项

我们还可以使用各种修饰符(如描边、填充、阴影、覆盖文本等)自定义三角形。

Triangle()
   .fill(Color.yellow)
   .frame(width: 300, height: 400, alignment: .center)

示例

以下 SwiftUI 程序用于使用 Shape Protocol 创建自定义三角形。

import SwiftUI
struct Triangle : Shape{
   func path(in rect: CGRect) -> Path {
      var xpath = Path()
      xpath.move(to: CGPoint(x: rect.minX, y: rect.maxY))
      xpath.addLine(to: CGPoint(x: rect.midX, y: rect.minY))
      xpath.addLine(to: CGPoint(x: rect.maxX, y: rect.maxY))
      xpath.addLine(to: CGPoint(x: rect.minX, y: rect.maxY))
      return xpath
   }
}

struct ContentView: View {
   var body: some View {
      Triangle()
         .fill(Color.yellow)
         .frame(width: 300, height: 400, alignment: .center)
   }
}

#Preview {
   ContentView()
}

输出

绘制三角形