タブバーアイテムのアイコンのサイズを大きくする方法はありますか?
[。] .frame(width: 40, height: 40)
は役に立ちません。
Settings()
.tabItem {
VStack {
Image(systemName: "archivebox")
}
}
.tag(1)
_
カスタムの高さを実現するためのカスタムタブビューを作成できます
これからインスパイアされているカスタムタブビューの結果を示す添付のスクリーンショット gist
struct TabView: View {
var views: [TabBarItem]
@State var selectedIndex: Int = 0
init(_ views: [TabBarItem]) {
self.views = views
}
var body: some View {
ZStack {
ForEach(views.indices) { i in
self.views[i].view
.opacity(self.selectedIndex == i ? 1 : 0)
}
GeometryReader { geometry in
VStack {
Spacer()
ZStack(alignment: .top) {
LinearGradient(gradient: Gradient(colors: [Color.black.opacity(0.3), Color.black.opacity(0.4)]), startPoint: .top, endPoint: .bottom)
.frame(height: 70 + geometry.safeAreaInsets.bottom)
HStack {
ForEach(self.views.indices) { i in
Button(action: {
self.selectedIndex = i
}) {
VStack {
if self.selectedIndex == i {
self.views[i].image
.foregroundColor(.white)
.padding(.top,10)
.font(.title)
} else {
self.views[i].image
.foregroundColor(Color.white.opacity(0.4))
.padding(.top,10)
.font(.title)
}
Text(self.views[i].title)
.foregroundColor(.white)
.font(Font.system(size: 16, weight: .bold))
.padding(.top,10)
.opacity(0.5)
}
.frame(maxWidth: .infinity)
}
}
}
}
}
.edgesIgnoringSafeArea(.bottom)
.animation(.easeInOut)
}
}
}
}
struct TabBarItem {
var view: AnyView
var image: Image
var title: String
init<V: View>(view: V, image: Image, title: String) {
self.view = AnyView(view)
self.image = image
self.title = title
}
}
/// Main View
struct ContentView: View {
var body: some View {
TabView([
TabBarItem(view: Text("This is home screen"),
image: Image(systemName:"house.fill"),
title: "home"),
TabBarItem(view: Text("2"),
image: Image(systemName:"heart.fill"),
title: "favorite"),
])
}
}
_
.font()
modifierを使用して大きな画像を取得できます。
YourView()
.tabItem {
Image(systemName: "…").font(.title)
}
_
残念ながら、パディングはタブバーの上部まで押したときに間違って見えます。