10 绘制与图形

原文链接: https://developer.apple.com/documentation/swiftui/drawing-and-graphics

10 绘制与图形

用图形效果和自定义绘图来增强你的视图。

概述

借助 SwiftUI 提供的内置视图和 形状,你可以创建丰富而动态的用户界面。为了增强任何视图,你可以应用许多通常与图形上下文相关联的图形效果,例如设置颜色、添加蒙版以及创建合成效果。

当你需要在图形上下文中使用立即模式绘制的灵活性时,请使用 Canvas 视图。当你想要绘制数量极其庞大的动态形状时——例如创建粒子效果——这会特别有帮助。

关于设计指导,请参阅 Human Interface Guidelines 中的 材质 和 颜色。

组合图形效果

立即模式绘制

设置颜色

  • tint(_:) — 设置该视图内的着色颜色。
  • Color — 一种随给定上下文自适应变化的颜色表示。

为内容设置样式

  • border(_:width:) — 用指定的样式和宽度为该视图添加边框。
  • foregroundStyle(_:) — 设置视图的前景元素使用给定的样式。
  • foregroundStyle(::) — 设置子视图中前景样式的主要层级与次要层级。
  • foregroundStyle(::_:) — 设置前景样式的主要、次要和第三层级。
  • backgroundStyle(_:) — 把指定的样式设置为视图中背景的渲染样式。
  • backgroundStyle — 一种可选样式,设置后会覆盖默认的系统背景样式。
  • ShapeStyle — 渲染形状时使用的颜色或图案。
  • AnyShapeStyle — 类型被抹除的 ShapeStyle 值。
  • Gradient — 以颜色停点数组表示的颜色渐变,每个停点都有一个参数化位置值。
  • MeshGradient — 由定位颜色的二维网格定义的二维渐变。
  • AnyGradient — 一种颜色渐变。
  • ShadowStyle — 渲染阴影时使用的样式。
  • Glass — 一种结构体,定义液态玻璃材质的配置。

变换颜色

缩放、旋转或变换视图

蒙版与裁剪

应用模糊与阴影

基于几何信息应用效果

  • visualEffect(_:) — 为该视图应用效果,同时通过几何代理提供对布局信息的访问。
  • visualEffect3D(_:) — 为该视图应用效果,同时通过三维几何代理提供对布局信息的访问。
  • VisualEffect — 视觉效果可以在不改变视图祖先或后代的情况下改变视图的视觉外观。
  • EmptyVisualEffect — 可向其上追加其他效果的基础视觉效果。

合成视图

测量视图

  • GeometryReader — 一种容器视图,把其内容定义为其自身尺寸和坐标空间的函数。
  • GeometryReader3D — 一种容器视图,把其内容定义为其自身尺寸和坐标空间的函数。
  • GeometryProxy — 用于访问容器视图尺寸和坐标空间(用于解析锚点)的代理。
  • GeometryProxy3D — 用于访问容器视图尺寸和坐标空间的代理。
  • coordinateSpace(_:) — 给视图的坐标空间命名,这样其他代码就可以基于这个命名空间操作点、尺寸等维度。
  • CoordinateSpace — 由坐标空间协议创建的已解析坐标空间。
  • CoordinateSpaceProtocol — 布局系统中的参照系。
  • PhysicalMetric — 提供以点为单位、与指定物理测量值相对应的值的访问方式。
  • PhysicalMetricsConverter — 物理度量转换器以物理长度测量的形式,在点值与其在三维空间中的范围之间进行转换。

响应几何信息变化

访问 Metal 着色器

访问几何构造

  • Axis — 二维坐标系中的水平或垂直维度。
  • Angle — 一种几何角度,可以用弧度或度数访问其值。
  • UnitPoint — 视图坐标空间中经过归一化的二维点。
  • UnitPoint3D — 视图坐标空间中经过归一化的三维点。
  • Anchor — 由锚点来源和某个特定视图派生出的不透明值。
  • DepthAlignmentID
  • Alignment3D — 在全部三个轴向上的对齐方式。
  • GeometryProxyCoordinateSpace3D — GeometryProxy3D 的一种表示,可用于基于 CoordinateSpace3D 的转换。