Как я могу задать собственный стиль ButtonStyle в дополнительных опциях SwiftUI? ⇐ IOS
Как я могу задать собственный стиль ButtonStyle в дополнительных опциях SwiftUI?
В настоящее время у меня есть стиль ButtonStyle, определенный ниже:
struct RoundedButtonRed: ButtonStyle { func makeBody (конфигурация: Конфигурация) -> some View { HStack { Разделитель() Configuration.label.foregroundColor(.white) Разделитель() } .padding() .background(Color.red.cornerRadius(13.0)) .scaleEffect(configuration.isPressed? 0,85: 1) } } У меня также есть другая структура (RoundedButtonBlack), которая имеет .background(Color.black.cornerRadius(13.0)), что выглядит как ненужное дублирование кода. Есть ли способ добавить собственные параметры конфигурации, чтобы я мог использовать одну и ту же структуру для разных цветов?
например
struct RoundedButtonRed: ButtonStyle { func makeBody (конфигурация: Конфигурация) -> some View { HStack { Разделитель() Configuration.label.foregroundColor(.white) Разделитель() } .padding() .background(configuration.backgroundColor) // цвет фона, взятый из конфигурации или переданный в вызов .buttonStyle(RoundedButton()) .scaleEffect(configuration.isPressed? 0,85: 1) } } Или, возможно, есть лучший способ?
В настоящее время у меня есть стиль ButtonStyle, определенный ниже:
struct RoundedButtonRed: ButtonStyle { func makeBody (конфигурация: Конфигурация) -> some View { HStack { Разделитель() Configuration.label.foregroundColor(.white) Разделитель() } .padding() .background(Color.red.cornerRadius(13.0)) .scaleEffect(configuration.isPressed? 0,85: 1) } } У меня также есть другая структура (RoundedButtonBlack), которая имеет .background(Color.black.cornerRadius(13.0)), что выглядит как ненужное дублирование кода. Есть ли способ добавить собственные параметры конфигурации, чтобы я мог использовать одну и ту же структуру для разных цветов?
например
struct RoundedButtonRed: ButtonStyle { func makeBody (конфигурация: Конфигурация) -> some View { HStack { Разделитель() Configuration.label.foregroundColor(.white) Разделитель() } .padding() .background(configuration.backgroundColor) // цвет фона, взятый из конфигурации или переданный в вызов .buttonStyle(RoundedButton()) .scaleEffect(configuration.isPressed? 0,85: 1) } } Или, возможно, есть лучший способ?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как задать стиль выбора высоты пользовательского интерфейса материала (React)
Гость » » в форуме CSS - 0 Ответы
- 81 Просмотры
-
Последнее сообщение Гость
-