Ios SwiftUI在选择器对象中显示图像

Ios SwiftUI在选择器对象中显示图像,ios,swiftui,picker,Ios,Swiftui,Picker,我正在尝试实现UIKit Country Picker的SwiftUI版本 用户输入一个表单,其中有一个选择器对象,该对象应创建带有所有国家以及国旗图像的选择器 请参见下面的屏幕截图: 第一个屏幕是首次尝试添加审阅时的表单 用户单击原产国选取器对象并导航到“国家”视图。 **这就是问题所在,图像不会渲染** 用户选择一个国家,然后关闭选择器视图以返回表单视图,并显示所选内容,该选项工作正常,同时显示所选国家的图像和名称 有没有人能够找到解决方案,或者这是iOS 13的一个bug 代码如下:

我正在尝试实现UIKit Country Picker的SwiftUI版本

用户输入一个表单,其中有一个选择器对象,该对象应创建带有所有国家以及国旗图像的选择器

请参见下面的屏幕截图:

第一个屏幕是首次尝试添加审阅时的表单

用户单击原产国选取器对象并导航到“国家”视图。 **这就是问题所在,图像不会渲染**

用户选择一个国家,然后关闭选择器视图以返回表单视图,并显示所选内容,该选项工作正常,同时显示所选国家的图像和名称

有没有人能够找到解决方案,或者这是iOS 13的一个bug

代码如下:

Form {

    TextField("Name", text: $name)
    TextField("Description", text: $desc)

    Picker(selection: $countryOrigin, label: Text("Country of Origin")) {

        Section(header: SearchBar(text: $fetcher.searchQuery)) {

            List(fetcher.country) { country in

                HStack() {

                    Image(uiImage: UIImage(contentsOfFile: Bundle.main.path(forResource: "CountryPicker", ofType: "bundle")! + "/Images/\(country.id).png")!)
                        .clipShape(Circle())

                    Text(country.name)

                }

            }

        }

    }

}
简单地使用选择器

import SwiftUI

struct ContentView: View {
    @State var sel  = -1
    let trashes = ["trash", "trash.fill", "trash.slash", "trash.slash.fill"]

    var body: some View {
        NavigationView {
            Form {
                Picker(selection: $sel, label: Text("Trash type")) {
                    ForEach(0 ..< trashes.count) { (i) in
                        HStack {
                            Image(systemName: self.trashes[i])
                            Text(self.trashes[i])
                        }.tag(i)
                    }
                }
            }.navigationBarTitle("Select trash")
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
导入快捷界面
结构ContentView:View{
@状态变量sel=-1
让垃圾=[“垃圾”,“垃圾.填充”,“垃圾.斜杠”,“垃圾.斜杠.填充”]
var body:一些观点{
导航视图{
形式{
选择器(选择:$sel,标签:文本(“垃圾类型”)){
ForEach(0..

为了简单起见,我使用文本更新而不是搜索栏

import SwiftUI

struct ContentView: View {
    @State var sel  = -1
    let trashes = ["trash", "trash.fill", "trash.slash", "trash.slash.fill"]

    var body: some View {
        NavigationView {
            Form {
                Picker(selection: $sel, label: Text("Trash type")) {
                    Section(header: Text("Header")) {
                    ForEach(0 ..< trashes.count) { (i) in
                        HStack {
                            Image(systemName: self.trashes[i])
                            Text(self.trashes[i])
                        }.tag(i)
                    }
                }
                }
            }.navigationBarTitle("Select trash")
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
导入快捷界面
结构ContentView:View{
@状态变量sel=-1
让垃圾=[“垃圾”,“垃圾.填充”,“垃圾.斜杠”,“垃圾.斜杠.填充”]
var body:一些观点{
导航视图{
形式{
选择器(选择:$sel,标签:文本(“垃圾类型”)){
节(标题:文本(“标题”)){
ForEach(0..

从左到右:

  • 图像(uiImage:)显示在HStack的表单部分中
  • 带图像的选择器中的图像(uiImage:)
  • 带图像的选择器中的图像(系统图像:)
  • 您可以看到,在2和3中,它会自动应用黑色的色调/遮罩(maskColor)(在使用非暗模式时,以及在暗模式时应用白色的色调/遮罩)

    要停止此行为,您需要将此修改器添加到图像中,但在可调整大小()之前


    .renderingMode(Image.templaterrenderingmode.original)

    你的选择器代码在哪里?似乎是swiftUI的问题。我也有同样的问题。如果我使用图像(systemImage:xyz),它工作正常,如果我尝试使用图像(uiImage:xyz),我会得到相同的图像黑色轮廓。我添加了我的代码,我看到了你的代码,但正如你所看到的,我的代码不工作?!更新后,它应该可以正常工作。选中它(复制-粘贴-运行)。似乎您的图像有问题,或者您错过了.tag(您可以在我的代码中看到),并且看到我没有使用任何列表…如果您喜欢使用搜索,作为动态数据,请使用筛选索引和相关idx as.tag!:-)@user3441734 OP正在尝试使用uiImage,而不是systemImage。uiImage中存在此问题。