添加视图时,SwiftUI 插入转换不起作用
Posted
技术标签:
【中文标题】添加视图时,SwiftUI 插入转换不起作用【英文标题】:SwiftUI insertion transion is not working when view added 【发布时间】:2020-11-12 08:26:26 【问题描述】:我正在苹果开发者页面中尝试 SwiftUI 教程。现在我正在学习过渡教程,但添加视图时我的过渡不起作用。
这是我的代码。
VStack(alignment: .leading)
HStack()
// title
Text(titleText)
.font(.headline)
.padding()
Spacer()
// button
Button(action:
withAnimation
self.showDetail.toggle()
)
Image(systemName: "chevron.right.circle")
.imageScale(.large)
.rotationEffect(.degrees(showDetail ? 90 : 0))
.padding()
// detail
if showDetail
Text(contentText)
.transition(.slide)
.padding()
我认为具有 contentText 的文本应该出现幻灯片过渡,但是当我按下按钮时,它就会弹出。但是当我再次按下按钮时,它会随着过渡而消失。所以移除过渡是可行的。
我该如何解决这个问题?
【问题讨论】:
在 Xcode 12.1 / ios 14.1 中按预期工作。 【参考方案1】:经过一番测试,我找到了一些解决方案。
解决方案 1: 这只是 XCode 画布的错误。 它可以在模拟器或真机上运行。
解决方案2.(如果你真的想在画布上做)
Button (action :
withAnimation(.easeInOut) // add animation manually
self.showDetail.toggle()
)
// label Image no change
if showDetail
Text(contentText)
.transition(.slide)
.animation(.easeInOut) // match with withAnimation
【讨论】:
【参考方案2】:虽然我还没有完成您所说的教程,但我认为使用 .move 过渡而不是 .slide 过渡效果很好。 这是我的详细代码部分(其余部分未更改)。希望我的回答能帮到你
if showDetail
Text(contentText)
.transition(.move(edge: .leading))
.padding()
【讨论】:
谢谢,但它仍然无法正常工作...当我触摸按钮时,文本会随着移动过渡弹出并消失。以上是关于添加视图时,SwiftUI 插入转换不起作用的主要内容,如果未能解决你的问题,请参考以下文章
使用功能swiftUI将视图添加到contentView不起作用