struct CustomButtonStyleView: View {

CustomButtonStyle оформляет label кнопки; модификатор на VStack применяется к вложенной Button. При нажатии выполнится action и напечатается Tapped.

Короткий ответ

Что ответить на собеседовании

CustomButtonStyle оформляет label кнопки; модификатор на VStack применяется к вложенной Button. При нажатии выполнится action и напечатается Tapped.

Подробный разбор

Ответ с пояснениями

Условие

struct CustomButtonStyleView: View { var body: some View { VStack { Button("Button") { print("Tapped") } } .buttonStyle(CustomButtonStyle()) } }

private struct CustomButtonStyle: ButtonStyle { func makeBody(configuration: Configuration) -> some View { configuration.label .padding() .foregroundColor(.white) .frame(maxWidth: .infinity) .background(Color.red) .clipShape(RoundedRectangle(cornerRadius: 8)) } }

Ответ

CustomButtonStyle оформляет label кнопки; модификатор на VStack применяется к вложенной Button. При нажатии выполнится action и напечатается Tapped.

Кнопка получает padding, белый текст, максимально доступную ширину, красный фон и скругление. Порядок модификаторов важен: фон применяется после frame, поэтому покрывает расширенную область.

Сейчас configuration.isPressed не используется, поэтому стиль не задаёт отдельного визуального состояния нажатия. Добавьте изменение opacity или scaleEffect с учётом доступности; для disabled-состояния нужна согласованная визуальная политика. ButtonStyle меняет представление, но не заменяет бизнес-действие кнопки и не должен запускать его из makeBody.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее