我正在使用Apple的SwiftUI框架创建一个iOS应用。当我需要检测用户是否在屏幕的特定区域上点击时,我显然使用了一个按钮。

问题在于该区域包含一个“图像”和一个“文本”,并且当按钮自动为其内容赋予蓝色时,该图像也会被着色,因此它不是一个图像,而是一个蓝色的圆角矩形。

据说一张图像值一千个单词,正如我不善于解释,这里有一个图形显示了发生的情况:

按钮外(无按钮样式)
ios - 避免在SwiftUI中使用按钮样式化其内容-LMLPHP

按钮内(带有按钮样式)
ios - 避免在SwiftUI中使用按钮样式化其内容-LMLPHP

发生这种情况是因为该按钮正在向图像添加.foregroundColor(.blue)

如何避免/禁用按钮添加样式到其组件?

编辑:这是我的按钮代码:

ContentView.swift:

Button(action: {/* other code */}) {
                    PackageManagerRow(packageManager: packageManagersData[0])
                }

PackageManagerRow.swift:
struct PackageManagerRow : View {
    var packageManager : PackageManager

    var body: some View {
        VStack {
            HStack {
                Image(packageManager.imageName)
                    .resizable()
                    .frame(width: 42.0, height: 42.0)
                Text(verbatim: packageManager.name)
                Spacer()
                Image(systemName: "checkmark")
                    .foregroundColor(.blue)
                    .opacity(0)
            }.padding(.bottom, 0)
            Divider()
                .padding(.top, -3)
        }
    }
}

最佳答案

我认为这是从您正在使用的图像的渲染模式得出的。

您有Image("Cydia logo")(或其他任何代码)的位置。

您应该将渲染模式设置为...

Image("Cydia Logo").renderingMode(.original)

关于ios - 避免在SwiftUI中使用按钮样式化其内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56931932/

10-12 12:54
查看更多