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 中显示一行或多行静态文本或字符串。它是开发人员在用户界面上显示文本数据的最常用构建块。此视图显示的文本是只读的,这意味着我们不允许编辑文本。

如果我们想显示动态文本,那么我们需要使用带有变量的文本。我们可以借助 SwiftUI 提供的预定义修饰符来更改文本视图的外观和行为。在本章中,我们将学习如何实现 Text View 以及如何自定义 Text View。

语法

以下是语法 −

Text("Hello SwiftUI")

示例

以下 SwiftUI 程序用于在视图上显示静态文本。

import SwiftUI

struct ContentView: View {
   var body: some View {
      Text("Hello SwiftUI")
   }
}
#Preview {
   ContentView()
}

输出

Text View

多行文本

在 SwiftUI 中,我们可以使用 Text View 显示单行或多行或段落。它还提供了修饰符,例如 .multilineTextAlignment、lineLimit、.foregroundStyle 等,以自定义多行文本在用户界面中的外观。

示例

以下 SwiftUI 程序用于在视图上显示多行文本。

import SwiftUI

struct ContentView: View {
   var body: some View {
      Text("Text Chapter: This chapter explains how we will display text in the view. It also explains how we can customize the text according to the requirement of the design. ").font(.headline)
   }
}
#Preview {
   ContentView()
}

输出

文本视图

自定义文本视图

自定义文本视图意味着我们可以在用户界面中更改文本的外观,包括文本颜色、背景颜色、字体样式、对齐方式、行距等。我们可以使用以下修饰符 −

更改文本的外观以适应所需的界面设计
  • 字体
  • 字体样式
  • 对齐
  • 颜色
  • 行距
  • 行限制

让我们详细讨论这些修饰符以及示例 −

自定义字体

我们可以借助字体修饰符自定义文本视图的字体。我们可以用两种不同的方式使用此修饰符 −

基本字体样式:此修饰符支持系统已支持的预定义样式,包括:.title、.largeTitle、.title2、.title3、.headline、.subheadline、.body、.caption、.caption2 等。以下是语法 −

.font(.title)

自定义字体:我们还可以借助 .font() 修饰符创建自定义字体。在这里,我们可以指定字体的大小、粗细、设计等。以下是语法 −

.font(.system(size: 30, weight: .bold))

示例

以下 SwiftUI 程序用于更改文本视图中文本的字体。

import SwiftUI

struct ContentView: View {
   var body: some View {
      Text("Hello SwiftUI").font(.headline)
      Text("Hello Swift").font(.system(size: 60, weight: .thin))
   }
}
#Preview {
   ContentView()
}

输出

文本视图

自定义字体样式

SwiftUI 提供各种修饰符来设置文本视图中文本的样式。使用这些修饰符,我们可以调整字体的粗细、设计、大小等。一些常用的字体样式如下 −

修饰符名称 语法 说明
字体粗细 .fontWeight()->Text 此修饰符用于指定给定文本的字体粗细。它只接受一个参数,即 weight,其值可以是:.black、.bold、.heavy、.light、.medium、.regular、.semibold、.thin、.ultraLight。
Italic .italic() 用于将文本设置为斜体。
Underline .underLine()-> Text 用于将文本设置为下划线。它接受两个参数:isActive 参数的值表示文本是否有下划线,color 表示下划线的颜色。默认颜色为黑色。
删除线 .strikethrough()-> Text 用于删除文本。它需要两个参数:isActive 参数的值表示文本是否应用了删除线,而 color 用于表示删除线的颜色。默认颜色为黑色。
字距调整 .kerning()-> Text 用于设置一行中每个字符之间的间距。它只需要一个参数,表示每个字符之间的间距量。此修饰符的默认值为 0。
Bold .bold() 用于将文本加粗。

示例

以下 SwiftUI 程序用于设置文本视图中文本的样式。

import SwiftUI

struct ContentView: View {
   var body: some View {
      Text("Hello SwiftUI")
         .fontWeight(.heavy)
         .italic()
         .underline(true, color: .green)
         .padding(10)
      Text("Hello Swift")
         .strikethrough()
         .kerning(3.0)
         .bold()
   }
}
#Preview {
   ContentView()
}

输出

Text View

文本对齐

在 SwiftUI 中,对齐用于指定文本在给定容器或视图内的位置。我们可以使用以下任何修饰符 − 更改给定文本的对齐方式

.frame() 修饰符

这用于指定视图在不可见框架内的位置。以下是语法 −

.frame(width:CGFloat, height:CGFloat, alignment: Alignment)

它采用以下参数 −

  • width: 它用于设置框架的宽度。如果此参数的值为 nil,则将根据视图的大小调整行为设置框架的宽度。
  • height: 用于设置框架的高度。 如果此参数的值为 nil,则将根据视图的大小调整行为设置框架的高度。
  • Alignment: 用于设置框架内视图的对齐方式。 此参数的值可以是以下任意一个:.topLeading、.top、.topTrailing、.leading、.center、.trailing、.bottomLeading、.bottom、.bottomTrailing。

multilineTextAlignment(_:) 修饰符

用于设置文本视图中多行的对齐方式。以下是语法 −

.multilineTextAlignment(_alignment: TextAlignement) -> some View

这只接受一个参数,即对齐。此参数的值可以是以下任意一个:.leading、.trailing 和 .center。

示例

以下 SwiftUI 程序用于对齐视图上的文本。

import SwiftUI

struct ContentView: View {
   var body: some View {
      Text("Hello SwiftUI")
         .frame(width: 100, height: 100, alignment: .bottomTrailing)
      Text("Text Chapter: This chapter explains how we will display text in the view. It also explains how we can customize the text according to the requirement of the design. ")
         .multilineTextAlignment(.trailing)
   }
}
#Preview {
   ContentView()
}

输出

Text View

自定义颜色

在 SwiftUI 中,我们可以通过更改文本颜色和背景颜色来增强文本的外观。我们可以使用以下修饰符 − 更改文本的颜色

  • .foregroundStyle(_:) modifier:此修饰符用于设置前景文本/元素的样式。以下是语法 −

    .foregroundStyle<S>(_style:S)-> some View where S : ShapeStyle
    

    此修饰符仅接受一个参数,即 style。此处的样式表示前景文本/元素的颜色或图案。

    要更改文本的颜色,我们在此修饰符中使用该 Color.colorName 属性,它会更改文本的颜色。除了 Color 之外,image() 和 linearGradient() 也是 foregroundstyle 修饰符的属性。

  • .background(_:) 修饰符:此修饰符用于设置文本视图的背景颜色。以下是语法 −

    .background(.colorName)
    

    此修饰符采用我们想要用作文本背景的颜色的名称。

示例

以下 SwiftUI 程序用于视图上文本的背景和前景颜色。

import SwiftUI

struct ContentView: View {
   var body: some View {
      Text("Hello SwiftUI")
         .font(.largeTitle)
         .foregroundStyle(Color.red)
         .background(.mint)        
   }
}

#Preview {
   ContentView()
}

输出

Text View

行距

若要在行间添加额外的空间,SwiftUI 提供了 .lineSpacing 修饰符。

语法

以下是语法 −

.lineSpacing(_lineSpacing:CGFloat)-> some View

此修饰符仅接受一个参数 lineSpacing。它表示一行底部和下一行顶部之间的额外空间量。

示例

以下 SwiftUI 程序用于在文本视图中的行间添加行距。

import SwiftUI

struct ContentView: View {
   var body: some View {
        
      // 无行距
      Text("Text Chapter: This chapter explains how we will display text in the view. It also explains how we can customize the text according to the requirement of the design. ")
      .padding(10)
           
      // 有行距
      Text("Text Chapter: This chapter explains how we will display text in the view. It also explains how we can customize the text according to the requirement of the design. ")
      .lineSpacing(10.0)
        
   }
}
#Preview {
   ContentView()
}

输出

Text View

行数限制

为了限制用户界面上显示的行数,SwiftUI 提供了一个名为 .lineLine(_:) 的修饰符。如果给定的文本溢出,则在文本最后一行的末尾使用省略号 (...)。

语法

以下是语法 −

.lineLimit(_number: Int?)->some View

它只接受一个参数,即表示行数限制的数字。如果此修饰符的值为 nil,则没有行数限制。

示例

以下 SwiftUI 程序用于限制文本视图中的行数。

import SwiftUI

struct ContentView: View {
   var body: some View {
        
      // 无行数限制
      Text("Text Chapter: This chapter explains how we will display text in the view. It also explains how we can customize the text according to the requirement of the design. ")
          .padding(10)
      
      // 有行限制
      Text("Text Chapter: This chapter explains how we will display text in the view. It also explains how we can customize the text according to the requirement of the design. ").lineLimit(2)        
   }
}

#Preview {
   ContentView()
}

输出

文本视图