Xcode 11 Beta 3 动画不再有效

Posted

技术标签:

【中文标题】Xcode 11 Beta 3 动画不再有效【英文标题】:Xcode 11 Beta 3 animation no longer works 【发布时间】:2019-07-05 04:17:01 【问题描述】:

我刚刚从 Xcode 11 Beta 2 更改为 Beta 3,虽然我还必须将 navigationButton 更改为 navigationLink,但一切正常,期待 .animation()

有其他人看到这个问题吗?他们改变了什么吗?我在 Beta 2 中工作得很好。

谢谢!!

import SwiftUI

struct BackGround : View 
  var body: some View 
    ZStack
      Rectangle()
        .fill(Color.gray)
        .opacity(0.9)
        .cornerRadius(15.0)
        .shadow(radius: /*@START_MENU_TOKEN@*/10/*@END_MENU_TOKEN@*/)
        .blur(radius: 5)
        .padding(20)
        .animation(.basic())
    

  

【问题讨论】:

它是如何失败的?编译时间?运行?顺便说一句,我什至在使用 Xcode Beta 3 让我的代码在我的 iPhone 上运行时遇到了问题——自从 Beta 2 可以编译后发生了变化,但运行时却说找不到符号。 感谢您的回复。它在模拟器中编译并运行,但不再有任何动画发生。在 beta 2 上运行良好 我也有同样的问题,但仅适用于 Xcode Previews,如果安装到模拟器上,动画可以工作,大大增加了开发动画的迭代循环 【参考方案1】:

我发现如果我将视图的内容包装在 VStack 中,也许其他 Stacks 也可以工作,视图将在预览器中进行动画处理

这是一个视图的快速示例,如果包装在 PreviewProvider 中的 VStack 中,则该按钮将具有动画效果。但是如果 VStack 被移除,它将不再有动画效果。试试看!

struct AnimatedButton : View 

  @State var isAnimating: Bool = false

  var body: some View 
    Button(action: 
      self.isAnimating.toggle()
    ) 
      Text("asdf")
    .foregroundColor(Color.yellow)
      .padding()
      .background(Color(.Green))
      .cornerRadius(20)
      .animation(.spring())
      .scaleEffect(isAnimating ? 2.0 : 1.0)
  


#if DEBUG
struct FunButton_Previews : PreviewProvider 
  static var previews: some View 
    VStack 
      AnimatedButton()
    
  

#endif

【讨论】:

以上是关于Xcode 11 Beta 3 动画不再有效的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swift 中制作动画(xcode 6 beta)

用 txt 文件中的字符串填充数组 [XCode6 Beta1 的解决方案不再有效]

Xcode 6 Beta 5 中的 UIView.animateWithDuration 更改

Xcode 11 beta 3 上 UIAction 的语法

.send() 和 .sink() 似乎不再适用于 Xcode 11 Beta 5 中的 PassthroughSubject

SwiftUI Xcode 11 beta 7 @Binding for collections 正在打破预览