SwiftUI Ярлык текста и изображения смещены по вертикали

Я использую новый интерфейс SwiftUI Label Просмотр, запуск бета-версии Xcode 12 на Big Sur.

В качестве изображения я использовал символ SF и нашел изображение с именем"play". Но я заметил ту же проблему с пользовательскими изображениями без каких-либо граничных пикселей (т.е. интервал не связан с изображением), например, с иконками PDF, поэтому он, вероятно, не связан с изображением.

В демонстрациях Apple текст и изображение должны автоматически выравниваться должным образом, но я этого не вижу.

struct ContentView: View {
    var body: some View {
        Label("Play", systemImage: "play")
    }
}

Результатов в этом:

Есть идеи, почему изображение (значок) и текст смещены по вертикали?

Если мы дадим кнопке цвет фона, мы более точно увидим смещение:

Label("Play", systemImage: "play")
    .background(Color.red)

Результатов в этом:

2 ответа

Решение

Вероятно, это ошибка, поэтому стоит отправить отзыв в Apple. А пока вот рабочее решение, основанное на собственном стиле меток.

Протестировано с Xcode 12b

struct CenteredLabelStyle: LabelStyle {
    func makeBody(configuration: Configuration) -> some View {
        HStack {
            configuration.icon
            configuration.title
        }
    }
}

struct TestLabelMisalignment: View {
    var body: some View {
        Label("Play", systemImage: "play")
           .labelStyle(CenteredLabelStyle())
    }
}

@Sajjon Вы можете добавить собственный View в качестве обходного пути и использовать изображение с текстом внутри HStack

Другие вопросы по тегам