SwiftUI изменяет вертикальное выравнивание метки по центру изображения и текста

#ios #swiftui

Вопрос:

Я пытаюсь центрировать изображение и текст метки SwiftUI по вертикали. Я попытался переопределить направляющую выравнивания изображения, но это не сработало. Есть какие-нибудь идеи?

         Label {
            Text("Test fdasf n adfsa dsfsd f asdf n asd fasd fads sad fda")
        } icon: {
            Image(systemName: true ? "checkmark.circle.fill" : "circle")
                .alignmentGuide(VerticalAlignment.top) {
                    $0[VerticalAlignment.center]
                }
        }
 

Они расположены сверху по оси y

Ответ №1:

Мы можем сделать это, используя пользовательский стиль этикетки, например

 struct DemoStyle: LabelStyle {
    func makeBody(configuration: Configuration) -> some View {
        HStack(alignment: .center) {    // << here !!
            configuration.icon
            configuration.title
        }
    }
}
 

и используйте его

 Label {
    Text("Test fdasf n adfsa dsfsd f asdf n asd fasd fads sad fda")
} icon: {
    Image(systemName: true ? "checkmark.circle.fill" : "circle")
}
.labelStyle(DemoStyle())
 

ДЕМОНСТРАЦИЯ

Протестировано с Xcode 13 / iOS 15

Комментарии:

1. Спасибо! Есть ли какой-нибудь способ решить эту проблему с помощью руководств по компоновке?