Я поднял это с Apple на помощнике по обратной связи, чтобы узнать, есть ли у них какие-либо полезные мысли.
Диалог здесь:
Я сказал:
Если на MACOS с SwiftUI я делаю это:
Button(action: { } ) {
Text("Press")
.padding()
.background(Color.blue)
}
Я получаю синюю коробку с двумя серыми битами, торчащими по бокам. Изображение прилагается. Вот эти две серые области - это концы нажимаемой кнопки. но я ожидаю, что кнопка будет иметь форму синей области.
Тот же код работает нормально, как и ожидалось на iOS.
(Я смотрел на использование .onTapGesture, но это не анимирует кнопку, так что вы знаете, что нажали ее).
Apple сказала:
iOS и macOS имеют разные стили ButtonStyles по умолчанию - iOS не имеет границ, macOS имеет этот стандартный эффект рамки.
Звучит так, будто вы пытаетесь создать пользовательский стиль ButtonStyle (и, следовательно, у вас нет хрома в какой-либо системе). Таким образом, вы захотите создать его, который может применить синий фон к метке кнопки, а затем применить его к вашей простой кнопке с текстом, например,
Button("Press"), action {}).buttonStyle(BluePaddingButtonStyle()
. Это обеспечит наличиеТо же самое на каждой платформе, на которой вы ее запускаете.
Я сказал:
Привет, Спасибо за объяснение. Я понимаю, что вы говорите, и я в порядке с методом, который я придумала.
Все еще не кажется правильным, что:
Button(action: { } ) {
Text("Press")
.padding()
.background(Color.blue)
}
должно произвести что-то настолько странноеИщу. Я не понимаю, почему этот фрагмент кода не может просто создать синюю кнопку.
Как я уже сказал - это не проблема, потому что я обошел ее, но в настоящее время она не кажется интуитивно понятной.
Apple сказала:
Предоставленный контент внутри ViewBuilder используется как метка кнопки: не вся кнопка. Кнопка будет по-прежнему идти с окружающим фоном, рамкой, стилем переднего плана и т. Д., Как описано в ее ButtonStyle. Поэтому, если ваша кнопка должна иметь очень специфичный внешний вид, она должна настроить этот стиль: либо для BorderlessButtonStyle (хотя обратите внимание, что он по-прежнему имеет определенный стиль внешнего вида на переднем плане), либо для пользовательского ButtonStyle.
Мои мысли:
Это помогло мне понять, почему это так.