我的自定义ButtonStyle看起来像这样。
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
中添加一些内容才能使其在预览中加载?我在做什么错了?
答案 0 :(得分:0)
我想这是由于与内置DefaultButtonStyle
冲突造成的,所以以不同的方式命名您的名字,例如
struct MyDefaultButtonStyle: ButtonStyle {
func makeBody(configuration: Configuration) -> some View {
// .. other code
...
Button(action: { self.viewModel.login() }) {
Text("Sign In")
.font(.headline)
}
.buttonStyle(MyDefaultButtonStyle())