【发布时间】:2019-12-07 18:43:33
【问题描述】:
如何在 SwiftUI 中为选项卡项(TabView)设置动画?
例如给选定的项目一个.scaleEffect() 和.spring() 动画
或如下:
这是我迄今为止尝试过的:
struct MyTabbedView: View {
@State var enlargeIt1 = false
@State var enlargeIt2 = true
var body: some View {
TabView {
Text("Item 1")
.onAppear {
self.enlargeIt1.toggle()
self.enlargeIt2.toggle()
}
.tabItem{
VStack{
Image(systemName: "music.note")
.font(self.enlargeIt1 ? .system(size: 30) : .system(size: 15) )
.animation(.interpolatingSpring(mass: 0.7, stiffness: 200, damping: 10, initialVelocity: 4))
Text("Music")
}
}.tag(1)
Text("Item 2")
.onAppear {
self.enlargeIt1.toggle()
self.enlargeIt2.toggle()
}
.tabItem{
VStack{
Image(systemName: "music.mic")
.font(self.enlargeIt2 ? .system(size: 30) : .system(size: 15) )
.animation(.interpolatingSpring(mass: 0.7, stiffness: 200, damping: 10, initialVelocity: 4))
Text("Mic")
}
}.tag(2)
}
}
}
结果是这样的:
我在名为 TestView 的单独视图中尝试了大致相同的代码:
struct TestView: View {
@State var enlargeIt1 : Bool = false
var body: some View {
VStack{
Image(systemName: "music.note")
.font(self.enlargeIt1 ? .system(size: 30) : .system(size: 15) )
.animation(.interpolatingSpring(mass: 0.7, stiffness: 200, damping: 10, initialVelocity: 4))
Text("Music")
}
.onTapGesture {
self.enlargeIt1.toggle()
}
}
}
结果如下:
我创建的TabView 没有给出相同的结果有什么问题?
【问题讨论】:
-
“选项卡视图仅支持文本、图像或图像后跟文本类型的选项卡项。传递任何其他类型的视图会导致可见但为空的选项卡项。”听起来您无法真正修改选项卡项的样式。 source
-
请说得更具体一点,您到底想要/期望发生什么?
-
@thisIsTheFox 像这样:dribbble.com/shots/5693620-Mobile-tabbar-Qonto
-
@kontiki 我的朋友 kontiki 大脑????有什么意见吗?