1.11 图形与渲染修饰符
4 分钟阅读
原文链接: https://developer.apple.com/documentation/swiftui/view-graphics-and-rendering
1.11 图形与渲染修饰符
影响系统绘制视图的方式,例如缩放或遮罩视图,或者应用图形效果。
概述
用这些视图修饰符应用许多通常与图形上下文关联的渲染效果,例如添加遮罩、创建合成。你既可以把这些效果应用到图形类视图(例如形状),也可以应用到任何其他 SwiftUI 视图。
当你确实需要图形上下文中立即模式绘制的灵活性时,请改用 Canvas 视图。当你想绘制数量极多的动态形状(例如制作粒子效果)时,这尤其有用。
关于在应用中使用这些效果的更多信息,参见绘图与图形。
遮罩与裁剪
- mask(alignment:_:) —— 用给定视图的 alpha 通道遮罩该视图。
- clipped(antialiased:) —— 把该视图裁剪到它的包围矩形框内。
- clipShape(_:style:) —— 为该视图设置裁剪形状。
- containerShape(_:) —— 设置该视图内任何相对容器形状或同心矩形所使用的容器形状。
缩放
- scaledToFill() —— 缩放该视图以填满父视图。
- scaledToFill3D() —— 缩放该视图以填满父视图。
- scaledToFit() —— 缩放该视图以适配父视图。
- scaledToFit3D() —— 缩放该视图以适配父视图。
- scaleEffect(_:anchor:) —— 以某个锚点为基准,按指定倍率等比缩放该视图。
- scaleEffect(x:y:anchor:) —— 以某个锚点为基准,按给定的水平和垂直倍率缩放该视图的渲染输出。
- scaleEffect(x:y:z:anchor:) —— 以某个锚点为基准,按指定的水平、垂直和深度倍率缩放该视图。
- imageScale(_:) —— 按可用的相对尺寸之一(包括小、中、大图像尺寸)缩放视图内的图像。
- aspectRatio(_:contentMode:) —— 把该视图的尺寸约束为指定的宽高比。
- aspectRatio3D(_:contentMode:) —— 把该视图的尺寸约束为指定的 3D 宽高比。
旋转与变换
- rotationEffect(_:anchor:) —— 让视图的渲染输出围绕指定点在二维空间内旋转。
- rotation3DEffect(_:anchor:) —— 按指定的 3D 旋转值旋转视图内容。
- rotation3DEffect(_:axis:anchor:anchorZ:perspective:) —— 让视图内容看起来像是围绕指定轴在三维空间中旋转。
- rotation3DEffect(_:axis:anchor:) —— 让视图内容围绕你以元组元素指定的轴旋转某个角度。
- rotation3DLayout(_:) —— 旋转视图,并影响它在所属布局中的边框
- rotation3DLayout(_:axis:) —— 旋转视图,并影响它在所属布局中的边框
- perspectiveRotationEffect(_:axis:anchor:anchorZ:perspective:) —— 让视图内容看起来像是围绕指定轴在三维空间中旋转。
- projectionEffect(_:) —— 对视图的渲染输出应用一次投影变换。
- transformEffect(_:) —— 对视图的渲染输出应用一次仿射变换。
- transform3DEffect(_:) —— 对视图的渲染输出应用一次 3D 变换。
图形效果
- blur(radius:opaque:) —— 对该视图应用高斯模糊。
- opacity(_:) —— 设置该视图的透明度。
- brightness(_:) —— 按指定量提亮该视图。
- contrast(_:) —— 设置该视图中相近颜色之间的对比与区分度。
- colorInvert() —— 反转该视图中的颜色。
- colorMultiply(_:) —— 为该视图添加颜色相乘效果。
- saturation(_:) —— 调整该视图的色彩饱和度。
- grayscale(_:) —— 为该视图添加灰度效果。
- hueRotation(_:) —— 对该视图应用色相旋转效果。
- luminanceToAlpha() —— 为该视图添加亮度转 alpha 效果。
- shadow(color:radius:x:y:) —— 为该视图添加阴影。
- visualEffect(_:) —— 对该视图应用效果,同时通过几何代理提供对布局信息的访问。
- visualEffect3D(_:) —— 对该视图应用效果,同时通过 3D 几何代理提供对布局信息的访问。
- materialActiveAppearance(_:) —— 为该视图中的材质设置显式的活动外观。
着色器
- colorEffect(_:isEnabled:) —— 返回一个新视图,它对
self的每个像素颜色应用shader作为滤镜效果。 - distortionEffect(_:maxSampleOffset:isEnabled:) —— 返回一个新视图,它把
shader作为几何形变效果应用到self每个像素的位置上。 - layerEffect(_:maxSampleOffset:isEnabled:) —— 返回一个新视图,它把
shader作为滤镜应用到由self生成的栅格图层上。
合成
- blendMode(_:) —— 设置把该视图与相互重叠的视图合成时的混合模式。
- compositingGroup() —— 把该视图包进一个合成组。
- drawingGroup(opaque:colorMode:) —— 在最终显示之前,把该视图的内容合成到一张离屏图像中。
动画
- animation(_:) —— 当该视图变化时,对它应用给定的动画。
- animation(_:value:) —— 当指定值变化时,对该视图应用给定的动画。
- animation(_:body:) —— 对
body闭包内所有可动画的值应用给定的动画。 - contentTransition(_:) —— 修改视图,让它用给定的过渡作为其内容变化的动画方式。
- geometryGroup() —— 把视图的几何信息(例如位置和大小)与其父视图隔离。
- keyframeAnimator(initialValue:repeating:content:keyframes:) —— 连续循环给定的关键帧,并用你在
body中应用的修饰符更新视图。 - keyframeAnimator(initialValue:trigger:content:keyframes:) —— 当给定触发值变化时播放给定的关键帧,并用你在
body中应用的修饰符更新视图。 - matchedGeometryEffect(id:in:properties:anchor:isSource:) —— 用你提供的标识符和命名空间定义一组几何信息同步的视图。
- matchedTransitionSource(id:in:) —— 把该视图标识为导航过渡(例如缩放过渡)的来源。
- matchedTransitionSource(id:in:configuration:) —— 把该视图标识为导航过渡(例如缩放过渡)的来源。
- phaseAnimator(_:content:animation:) —— 在一系列连续变化的阶段中,对你应用到视图上的效果添加动画。
- phaseAnimator(_:trigger:content:animation:) —— 在一系列基于触发器变化的阶段中,对你应用到视图上的效果添加动画。
- transition(_:) —— 把一个过渡与该视图关联起来。
- transaction(_:) —— 把给定的事务变更函数应用到该视图内使用的所有动画。
- transaction(value:_:) —— 把给定的事务变更函数应用到该视图内使用的所有动画。
- transaction(_:body:) —— 把给定的事务变更函数应用到
body闭包内使用的所有动画。