在我的應用程式中,我TabView根據某些條件向/從中添加/洗掉子視圖。我想在標簽欄中為標簽專案添加/洗掉設定影片。我的實驗(見下面的代碼)表明它不起作用。我在網上看到TabView對影片的支持非常有限,有些人推出了自己的實作。但以防萬一,是否有可能實作它?
import SwiftUI
struct ContentView: View {
@State var showBoth: Bool = false
var body: some View {
TabView {
Button("Test") {
withAnimation {
showBoth.toggle()
}
}
.tabItem {
Label("1", systemImage: "1.circle")
}
if showBoth {
Text("2")
.tabItem {
Label("2", systemImage: "2.circle")
}
.transition(.slide)
}
}
}
}
注意:將transition()呼叫移動到Label傳遞給tabItem()也不起作用。
uj5u.com熱心網友回復:
正如評論的那樣,Apple 希望 TabBar 在整個應用程式中保持不變。
但是你可以簡單地實作你自己的完全控制的 Tabbar:
struct ContentView: View {
@State private var currentTab = "One"
@State var showBoth: Bool = false
var body: some View {
VStack {
TabView(selection: $currentTab) {
// Tab 1.
VStack {
Button("Toggle 2. Tab") {
withAnimation {
showBoth.toggle()
}
}
} .tag("One")
// Tab 2.
VStack {
Text("Two")
} .tag("Two")
}
// custom Tabbar buttons
Divider()
HStack {
OwnTabBarButton("One", imageName: "1.circle")
if showBoth {
OwnTabBarButton("Two", imageName: "2.circle")
.transition(.scale)
}
}
}
}
func OwnTabBarButton(_ label: String, imageName: String) -> some View {
Button {
currentTab = label
} label: {
VStack {
Image(systemName: imageName)
Text(label)
}
}
.padding([.horizontal,.top])
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/449633.html
