在 Picker 中使用時,我遇到了 SVG 圖示無法調整大小的問題。
舉例來說,這里是一個在基本串列中使用 SVG 影像資產的示例,其中
Picker注釋掉了 ...
struct DebugView: View {
@State var selectedType: DrugOrMedicineType = .tablet
var body: some View {
VStack {
List {
// Picker("Type", selection: $selectedType) {
ForEach(DrugOrMedicineType.allCases, id: \.self) { t in
HStack {
Image(t.icon)
.resizable()
.scaledToFit()
.frame(width: 20, height: 20)
Text(t.title)
}.tag(t)
}
// }
}
}
}
}
..這就是我看到的渲染...

但是,如果我取消注釋Picker這樣的...
struct DebugView: View {
@State var selectedType: DrugOrMedicineType = .tablet
var body: some View {
VStack {
List {
Picker("Type", selection: $selectedType) {
ForEach(DrugOrMedicineType.allCases, id: \.self) { t in
HStack {
Image(t.icon)
.resizable()
.scaledToFit()
.frame(width: 20, height: 20)
Text(t.title)
}.tag(t)
}
}
}
}
}
}
我得到這個渲染...

這就是我嘗試從選項串列中進行選擇時的樣子...

有人可以解釋為什么影像在出現時不遵循HStack布局并尊重frame(...)修飾符Picker嗎?
注意我正在使用 XCode 14.0.1 并在 iOS 16 上運行。
uj5u.com熱心網友回復:
與 iOS 15 相比,它們似乎改變了選擇器中處理標簽的方式,這就是為什么您遇到標簽問題的原因,這是一個作業示例,使用標簽修飾符您可以按照您想要的方式處理標簽:
import SwiftUI
enum PickerItems: String {
case item1
case item2
}
struct pickerView: View {
@State var selected: PickerItems = .item1
var body: some View {
Menu {
Picker(selection: $selected,
label: EmptyView(),
content: {
HStack {
Text("OPTION 1")
Image(systemName: "pencil")
.resizable()
.scaledToFit()
.frame(width: 20, height: 20)
} .tag(PickerItems.item1)
HStack {
Text("OPTION 2")
Image(systemName: "square.and.arrow.up.circle.fill")
.resizable()
.scaledToFit()
.frame(width: 20, height: 20)
}
.tag(PickerItems.item2)
}).pickerStyle(.automatic)
.accentColor(.white)
} label: {
Text("Selected Item: \(selected.rawValue)")
.font(.title3)
}
}
}

uj5u.com熱心網友回復:
似乎 Picker 在 iOS 16 中被破壞了。我能找到的最好的等價物是使用Menu@guillermo-jiménez 建議的那樣,但Picker完全省略了。
結果如下:
struct DebugView: View {
@State var selectedType: DrugOrMedicineType = .tablet
var body: some View {
VStack {
List {
HStack {
Text("Type")
Spacer()
Menu {
ForEach(DrugOrMedicineType.allCases, id: \.self) { t in
Button {
selectedType = t
} label: {
Label(t.title, image: t.icon)
}
}
} label: {
HStack {
Image(selectedType.icon)
.resizable()
.scaledToFit()
.frame(width: 20, height: 20)
Text(selectedType.title)
}
}
}
}
}
}
}
這就是它的外觀和串列中的專案......

...這就是您進行選擇時的外觀:

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/512432.html
標籤:迅速图片svg迅捷拣货员
下一篇:兩個可能的影像路徑,一個后備影像
