实例方法
transaction(_:)
将给定的事务突变函数应用于视图中使用的所有动画。
声明
func transaction(_ transform: @escaping (inout Transaction) -> Void) -> some View
返回值
包装此视图并将转换应用于视图中使用的所有事务的视图。
参数
transform
应用于此视图中事务的转换。
详述
使用此修改器更改或替换视图中使用的动画。考虑由同时执行所有三个动画的按钮控制的三个相同的动画:
-
第一个动画将 “Rotation”
Text
视图旋转 360 度。 -
第二个使用
transaction(_:)
修改器通过在动画开始时添加两秒延迟来更改动画,然后将 “Rotation\nModified”Text
视图动画的旋转速度增加 2 倍。 -
第三个动画使用
transaction(_:)
修改器将影响“Animation\nReplaced”Text
视图的旋转动画替换为弹簧动画。
以下代码实现了这些动画:
struct TransactionExample: View {
@State var flag = false
var body: some View {
VStack(spacing: 50) {
HStack(spacing: 30) {
Text("Rotation")
.rotationEffect(Angle(degrees:
self.flag ? 360 : 0))
Text("Rotation\nModified")
.rotationEffect(Angle(degrees:
self.flag ? 360 : 0))
.transaction { view in
view.animation =
view.animation?.delay(2.0).speed(2)
}
Text("Animation\nReplaced")
.rotationEffect(Angle(degrees:
self.flag ? 360 : 0))
.transaction { view in
view.animation = .interactiveSpring(
response: 0.60,
dampingFraction: 0.20,
blendDuration: 0.25)
}
}
Button("Animate") {
withAnimation(.easeIn(duration: 2.0)) {
self.flag.toggle()
}
}
}
}
}
在 Image
或 Button
等叶视图上使用此修饰符,而不是在 VStack
或 HStack
等容器视图上使用。转换适用于该视图中的所有子视图;在容器视图上调用 transaction(_:)
可能会导致执行范围不受限制,具体取决于视图层次结构的深度。
可用版本
iOS 13.0+, iPadOS 13.0+, macOS 10.15+, Mac Catalyst 13.0+, tvOS 13.0+, watchOS 6.0+
相关用法
- Swift Never transformEffect(_:)用法及代码示例
- Swift Never truncationMode(_:)用法及代码示例
- Swift Never task(priority:_:)用法及代码示例
- Swift Never tag(_:)用法及代码示例
- Swift Never touchBarCustomizationLabel(_:)用法及代码示例
- Swift Never textSelection(_:)用法及代码示例
- Swift Never task(id:priority:_:)用法及代码示例
- Swift Never touchBar(content:)用法及代码示例
- Swift Never touchBarItemPrincipal(_:)用法及代码示例
- Swift Never toggleStyle(_:)用法及代码示例
- Swift Never touchBarItemPresence(_:)用法及代码示例
- Swift Never textInputAutocapitalization(_:)用法及代码示例
- Swift Never textContentType(_:)用法及代码示例
- Swift Never toolbar(id:content:)用法及代码示例
- Swift Never touchBar(_:)用法及代码示例
- Swift Never toolbar(content:)用法及代码示例
- Swift Never tabItem(_:)用法及代码示例
- Swift Never tint(_:)用法及代码示例
- Swift Never pageCommand(value:in:step:)用法及代码示例
- Swift Never opacity(_:)用法及代码示例
- Swift Never colorMultiply(_:)用法及代码示例
- Swift Never accessibilityAction(action:label:)用法及代码示例
- Swift Never alert(isPresented:error:actions:message:)用法及代码示例
- Swift Never confirmationDialog(_:isPresented:titleVisibility:actions:)用法及代码示例
- Swift Never flipsForRightToLeftLayoutDirection(_:)用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 Never transaction(_:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。