swiftui,动画应用于父效果子动画

2023-12-13

RectangleView有滑动动画,他的子TextView有旋转动画。我想当 Go! 时, RectangleView 及其子组件(TextView)作为一个整体滑入屏幕(easeInOut)!按下,并且 TextView 永远旋转(线性)。但实际上,子 TextView 与父级分离,旋转(线性)和滑动(线性),并且永远重复。

为什么动画应用到父级效果子级动画?

struct AnimationTestView: View {
    @State private var go = false
    var body: some View {
        VStack {
            Button("Go!") {
                go.toggle()
            }
            if go {
                RectangleView()
                    .transition(.slide)
                    .animation(.easeInOut)
            }
        }.navigationTitle("Animation Test")
    }
}

struct RectangleView: View {
    var body: some View {
        Rectangle()
            .frame(width: 100, height: 100)
            .foregroundColor(.pink)
            .overlay(TextView())
    }
}

struct TextView: View {
    @State private var animationRotating: Bool = false
    let animation = Animation.linear(duration: 3.0).repeatForever(autoreverses: false)
    
    var body: some View {
        Text("Test")
            .foregroundColor(.blue)
            .rotationEffect(.degrees(animationRotating ? 360 : 0))
            .animation(animation)
            .onAppear { animationRotating = true }
            .onDisappear { animationRotating = false }
    }
}

如果有多个同时动画,通用解决方案(在大多数情况下)是为每个动画使用显式状态值。

所以这里是一个更正的代码(使用 Xcode 12.1 / iOS 14.1 进行测试,使用模拟器或设备,预览渲染一些转换不正确)

demo

struct AnimationTestView: View {
    @State private var go = false
    var body: some View {
        VStack {
            Button("Go!") {
                go.toggle()
            }
                VStack {      // container needed for correct transition !!
                    if go {
                         RectangleView()
                              .transition(.slide)
                    }
                }.animation(.easeInOut, value: go)    // << here !!
        }.navigationTitle("Animation Test")
    }
}

struct RectangleView: View {
    var body: some View {
        Rectangle()
            .frame(width: 100, height: 100)
            .foregroundColor(.pink)
            .overlay(TextView())
    }
}

struct TextView: View {
    @State private var animationRotating: Bool = false
    let animation = Animation.linear(duration: 3.0).repeatForever(autoreverses: false)
    
    var body: some View {
        Text("Test")
            .foregroundColor(.blue)
            .rotationEffect(.degrees(animationRotating ? 360 : 0))
            .animation(animation, value: animationRotating)          // << here !!
            .onAppear { animationRotating = true }
            .onDisappear { animationRotating = false }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

swiftui,动画应用于父效果子动画 的相关文章

  • 在 SwiftUI 中,如何执行手势但将手势转发到其后面的视图?

    我正在创建一个工具提示系统 如果用户触摸工具提示之外的任何地方 我想关闭工具提示 我希望这样在工具提示之外的触摸既可以消除工具提示 又可以激活用户点击的任何控件 因此 您可以打开一个工具提示 然后仍然单击工具提示外部的按钮 并在第一次点击时
  • SwiftUI - 从 NSObject 继承的 ObservableObject 在 iOS 13 中不会更新

    我知道 这是 无法在 iOS XX 中工作 问题之一 但我完全陷入困境 所以我有一个ObservableObject继承自的类NSObject 因为我需要听委托方法UISearchResultsUpdating class SearchBa
  • Android 中 Activity 之间的 3D 动画

    How to create animation between two Activity look like As Screen shot in android 搜索jazzyviewpager 这是link https github co
  • HStack 中的 SwiftUI EditButton 未激活编辑模式

    作为更大表单的一部分 我希望有一个带有列表的部分 其条目可以重新排序 在整个视图中 应该只能编辑该特定列表 而不能编辑其他内容 因此我希望将编辑按钮放在列表附近 如果我只是将 EditButton 设置为节标题 则可以对列表项重新排序 但无
  • iOS - 当 UIView 移动时将 UITextField 移动到不同的位置

    我有一个主 UIView 它通过开关向上移动 我有这个工作 那里没有问题 现在 UIView 当向下时 占据屏幕的大约一半 当它向上推时 它会显示底部 40px 在 UIView 中 当它处于向下状态时 它有一个 UITextField 并
  • 奇怪的 UITableView 插入/删除行动画

    在带有动画 UITableView RowAnimationTop 的 UITableView 中插入 删除 UITableViewCell 时 我看到了奇怪的效果 当要插入的单元格比上面的单元格大得多时 就会发生动画故障 显示模拟器中的故
  • 自动布局、UIDynamics 和动画

    我对自动布局还很陌生 并且对如何为视图设置动画感到困惑 我读了很多 我知道你必须遵守限制 编辑它 然后包装layoutIfNeeded in an UIView动画块 但当真正要做的时候 我却有点失落 我很乐意有人能向我解释如何做这个动画
  • ExpandableListView 的动画

    是否可以为 ExpandableListView 应用展开或折叠动画 可以使用一个简单的 ListView 来完成 该 ListView 包含最初隐藏的视图和扩展动画的自定义类 基本思想是从View GONE然后逐渐将边距大小从负值调整为所
  • 如何跟踪 SwiftUI 应用程序中的所有触摸

    我正在尝试在 SwiftUI 应用程序中实现锁屏 我需要跟踪每个事件才能重新启动锁定计时器 在 UIKit 应用程序中 我使用了这种方法 重写 UIApplication 它允许了解应用程序中的任何事件 override func send
  • SwiftUI:如何让项目的拖放重新排序起作用?

    我有以下 SwiftUI 视图 struct ContentView View State var model Model var body some View ScrollView LazyVGrid columns columns sp
  • WPF:动画不流畅

    我正在制作一个动画TextBlock 60秒后增加FontSize从 8 点到 200 点 一切工作正常 除了我的动画随着文本的增长而上下移动 为什么会发生这种情况 是否可以避免这种情况 我有一个非常简单的 XAML 文件
  • 如何用 5000 个 PNG 文件创建电影?

    嗯 简单的情况 我已经创建了大约 5000 个帧作为 PNG 文件 我想将它们显示为 NET 应用程序中的动画 每个图像的大小均为 1920x1080 PNG 文件使用 Alpha 通道实现 部分 透明度 这会让事情变得有点复杂 因为我更愿
  • 捕获 SwiftUI 中的错误

    我在某些视图中有一个按钮 它调用 ViewModel 中可能引发错误的函数 Button action do try self taskViewModel createInstance name self name catch Databa
  • jQuery 动画:鼠标移开后停止动画

    我正在尝试做一个div悬停时滑出和滑入 即鼠标分别进入和离开 然而 当我多次徘徊进出时 div基本上不断地来回滑动 直到我悬停的次数为止 请参考这个jsFiddle 示例 http jsfiddle net sikusikucom TQz5
  • React Native:约束 Animated.Value

    我正在制作一个 React Native 应用程序 场景是这样的 我希望用户能够平移视图 但不完全按照他想要的方式 我想约束视图被拖动时可以移动的距离由用户 我已经阅读了两者的文档PanResponder and AnimatedAPI 多
  • 通过 ObservableObject 向下传递 GestureState 属性

    我有一个ObservableObject其成员属性为 GestureState包装纸 在我看来 我如何访问GestureState财产 我已经尝试过使用点表示法 绑定尝试公开 GestureState 但它不喜欢那样 我的应用程序状态Obs
  • 如何将一个 SwiftUI View 作为变量传递给另一个 View 结构

    我正在实施一个very自定义 NavigationLink 称为MenuItem并希望在整个项目中重用它 它是一个符合以下条件的结构体View并实施var body some View其中包含一个NavigationLink 我需要以某种方
  • Flipboard 动画

    有谁知道如何构建像 Flipboard 应用程序一样的翻转动画 谢谢 如果你指的是翻页过渡 请查看我编写的 OpenGL 过渡类 https github com epatel EPGLTransitionView https github
  • animation.start() 或animation.startNow() 不会立即开始动画

    我有一个奇怪的问题 有时应该淡出我的控件 ImageButton 的动画不会立即启动 我使用淡出动画来隐藏它 然后在 myListener 的末尾 onAnimationEnd 中 我将新资源作为按钮上的图像 我的应用程序代码中的某处 An
  • 如何使用 iOS16 删除 SwiftUI Plain List 中的节标题顶部填充

    当我们使用 SwiftUI List 组件并需要一个节标题时 顶部填充将出现在每个节的标题上 iOS15下 我们使用UITableView appearance sectionHeaderTopPadding 0来解决这个问题 查看附件截屏

随机推荐

  • 为什么使用 boost::multi precision::cpp_int 会影响这里的尾调用优化

    我有一些模板化代码 编译器可以对大多数数据类型进行尾部调用优化 但不能对其他数据类型进行尾部调用优化 代码实现了pow template
  • 如何在 gnuplot 中对箱线图异常值进行分组

    我有大量数据点 我尝试用箱线图绘制它们 但一些异常值是完全相同的值 并且它们表示在彼此旁边的一条线上 我发现如何设置gnuplot箱线图中异常值之间的水平距离 但这并没有太大帮助 因为这显然是不可能的 是否可以将异常值分组在一起 打印一个点
  • 如何撤消对 vim 中文本块的所有更改?

    是否可以选择一些带有视线的文本并撤消从一开始对其所做的所有更改 实际上 我是通过撤消所有拉动块的操作 然后将所有内容重做到最后一次修改 然后用拉动的文本替换该块来实现的
  • 如何从 Java 函数返回值?

    我正在尝试让以下程序运行 public class funWithNumbers public static void main String args int ten 10 int subend 7 int result ten sube
  • Android 图像位于 /assets 或 res/raw

    如果我想将一堆图像放入文件夹结构中 例如 我正在构建一个海滩应用程序 每个海滩都通过我的海滩详细信息活动显示 具体取决于从我的海滩列表中选择的海滩 然后我想显示来自该特定海滩的五张图像 每个海滩都会有一个文件夹 其名称与海滩的 id 相对应
  • 如何使用 Spring 4.0.6 全局设置 Hibernate 4.3.5.Final 的 FlushMode?

    我正在尝试使用 Hibernate 4 3 5 Final 和 Spring 4 0 6 升级我们的应用程序 我的应用程序中任何具有数据库写入操作的位置都会出现如下错误 Caused by org springframework dao I
  • JasperReports / iReport Designer:我可以有条件地显示乐队吗?

    我创建了一个报告如下 多个细节带 每个详细信息带包含 1 个表 每个表链接到 1 个数据集 每当查询的结果集返回空集 未找到结果 时 我可以隐藏详细信息带吗 我怎样才能做到这一点 在每个详细信息区域的 属性 中 您有一个名为 打印表达式 的
  • 更新到最新的 Angular cli 版本后,NG v 仍然显示旧版本号?

    我已发出以下命令 如图所示 我收到一条成功消息 说 Angular cli 已更新到 10 0 版本 但是当我运行 ng v 命令时 我得到了旧版本号 那么真的更新了吗 这里有什么问题呢 如何全局更新到最新版本 以便当我通过 cli 生成新
  • 将父级 ​​div 与浮动子级居中

    父级没有定义宽度 因为里面有未知数量的子级 为什么孩子会掉入新的队列以及如何预防 孩子们需要站在同一条线上 wrap position absolute left 50 top 50px height 40px transform tran
  • 防止 IE11 在 Angular 2 中缓存 GET 调用

    我有一个休息端点 它在 GET 调用上返回一个列表 我还有一个 POST 端点来添加新项目和一个 DELETE 来删除它们 这适用于 Firefox 和 Chrome POST 和 DELETE 则适用于 IE11 但是 IE11 中的 G
  • Matlab 中两个向量的直方图

    先谢谢您的帮助 我有两组平行向量 x 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
  • 使用基本模板时如何避免重复上下文设置过程?

    使用时jinja2 基本 骨架 模板通常由许多其他模板扩展 我的基本模板之一需要上下文中的某些变量 并且在任何使用此基本模板的地方都必须重复设置过程 例如 我可能需要从数据库读取一些类别名称并将它们呈现为标题中的列表 现在我必须在使用基本模
  • java中如何比较字符串数组中的元素?

    我正在尝试在字符串数组中查找重复的单词 这是我的比较代码 for int j 0 j lt wordCount j for int i wordCount 1 i gt j i if stringArray i compareTo stri
  • 使用分隔符打印列表中的所有项目

    考虑这个用于打印逗号分隔值列表的 Python 代码 for element in list print element 在以下情况下 打印时不出现逗号的首选方法是什么element是列表中的最后一个元素 ex a 1 2 3 for el
  • 对于某些 HTML 内容,点击事件在 Safari Mobile 中不起作用

    在我的网络应用程序中 有一个针对移动设备的单独的导航栏 我希望当单击菜单按钮或单击网站中的其他任何位置时 此导航栏会折叠 它已经可以在任何移动浏览器中工作 但不能在 safari 移动浏览器中工作 在 safari 中 对于主页它也可以工作
  • 如何将openssl库与arm交叉编译器链接

    我有应用程序 test c 通过在主机 在 ubuntu 上 机器上使用 gcc 我成功编译并在主机上成功运行了应用程序 现在我想使用arm交叉编译器交叉编译相同的应用程序LPC1788 请指导我如何链接 openssl 库文件 我的 Mk
  • 创建 1D NumPy 数组的 NoN 填充元素的滑动窗口

    我有一个时间序列x 0 x 1 x n 1 存储为一维numpy大批 我想将其转换为以下矩阵 NaN NaN x 0 NaN x 0 x 1 NaN x 0 x n 3 x n 2 x 0 x 1 x n 2 x n 1 我想使用这个矩阵来
  • BundleTransformer.Less 根据上下文/请求注入变量

    我们希望使用捆绑机制System Web Optimization与 Less 变压器结合使用 问题在于同一应用程序 服务器为不同品牌的网站提供页面 因此 根据 SiteContext 使用相同的 less 文件 但 less 变量应使用不
  • 编译器如何处理字符串插值

    我正在对方法属性使用字符串插值 例如 const string User SomeUser const string Admin Admin Authorize Roles User Admin public IHttpActionResu
  • swiftui,动画应用于父效果子动画

    RectangleView有滑动动画 他的子TextView有旋转动画 我想当 Go 时 RectangleView 及其子组件 TextView 作为一个整体滑入屏幕 easeInOut 按下 并且 TextView 永远旋转 线性 但实