SwiftUI 预览:如果自定义按钮样式位于其他文件中,则预览失败



我的自定义按钮样式看起来像这样。

struct DefaultButtonStyle: ButtonStyle {
func makeBody(configuration: Configuration) -> some View {
configuration.label
.padding()
.frame(minWidth: 0, maxWidth: .infinity)
.foregroundColor(.white)
.background(RoundedRectangle(cornerRadius: 4)
.fill(configuration.isPressed ? Color.black : Color.green)
)
}
}

使用自定义按钮样式的示例实现。

Button(action: { self.viewModel.login() }) {
Text("Sign In")
.font(.headline)
}
.buttonStyle(DefaultButtonStyle())
.frame(minWidth: 0, maxWidth: 380)
.padding([.leading, .trailing], 27.5)

我的预览代码。

#if DEBUG
struct LoginView_Previews: PreviewProvider {
static var previews: some View {
LoginView (viewModel: LoginViewModel()).environment(.verticalSizeClass, .regular)
}
}
#endif

当我将自定义样式放在与视图相同的文件中时。预览还可以。 但是当我在它自己的文件中移动自定义样式时(目的是在整个应用程序中重用它(。预览引发错误。

Compiling failed: type 'Any' has no member 'leading'

我是否必须在LoginView_Previews中添加某些内容才能使其在预览版中加载?我做错了什么?

我想这是由于与内置DefaultButtonStyle冲突,所以以某种方式命名您的名称,例如

struct MyDefaultButtonStyle: ButtonStyle {
func makeBody(configuration: Configuration) -> some View {
// .. other code
...
Button(action: { self.viewModel.login() }) {
Text("Sign In")
.font(.headline)
}
.buttonStyle(MyDefaultButtonStyle())

相关内容

最新更新