Перезаписываемый ButtonStyle в SwiftUI - PullRequest
1 голос
/ 11 октября 2019

Я пытаюсь создать пользовательский ButtonStyle, который предоставляет некоторые значения по умолчанию, но также может быть переопределен.

Например, в iOS DefaultButtonStyle по умолчанию окрашивает текст в синий, но вы можете переопределить егоуказав модификатор foregroundColor. Аналогично, PlainButtonStyle по умолчанию окрашивает текст в черный цвет, но его также можно переопределить:

example of overriding foreground color in button styles

Очевидно, что можно создать стиль кнопки, который можно переопределить,Однако, если я просто создаю тот, который устанавливает цвет переднего плана следующим образом, он не может быть переопределен:

public struct CustomButtonStyle: ButtonStyle {
    public func makeBody(configuration: Self.Configuration) -> some View
    {
        configuration.label
            .foregroundColor(Color.blue)
    }
}

example of not being able to override foreground color in custom button style

Как я могу сделать ButtonStyle, который обеспечивает цвет переднего плана по умолчанию, но также может быть переопределен?

Заранее спасибо!

1 Ответ

0 голосов
/ 11 октября 2019

Вы можете реализовать это так:

public struct CustomButtonStyle: ButtonStyle {

    let color: Color

    public init(color: Color = .accentColor) {
        self.color = color
    }

    public func makeBody(configuration: Self.Configuration) -> some View {
        configuration.label
            .foregroundColor(color)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...