Предотвращение динамического изменения размера изображения системы SwiftUI для элемента панели навигации - PullRequest
0 голосов
/ 16 июня 2019

Я хотел бы добавить кнопку «плюс» к элементам панели навигации, используя изображение системы плюс в SwiftUI. Однако я не могу предотвратить динамическое масштабирование образа системы при изменении шрифта доступности.

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

Функция доступности удержания кнопки навигационной панели для шрифтов большого типа также не работает, как в UIKit.

Действительно разочаровывает, что с SwiftUI невозможно сделать что-то простое, и о доступности не думали. Кнопка панели профиля SwiftUI tutorials также не работает для шрифтов большого размера. (PS SwiftUI - это будущее)

Вот моя попытка:

struct ContentView : View {
    var body: some View {
        NavigationView {
            List {
                Text("Stop + Bar Button resizing")
                    .lineLimit(nil)
            }
            .navigationBarTitle(Text("Plus"))
            .navigationBarItems(trailing:
                PlusNavigationButton()
            )
        }
    }
}

struct PlusNavigationButton: View {
    var body: some View {
        PresentationButton(
            Image(systemName: "plus")
                .resizable()
                .frame(width: 44, height: 44),
            destination: NewView())
    }
}

Plus bar button image resizes dynamically

1 Ответ

0 голосов
/ 16 июня 2019

Вы должны построить то, что вы точно хотите.Поэтому, если вы хотите использовать изображение 16x16 с какой-то дополнительной областью hitTest, вы можете построить так:

var body: some View {
    PresentationButton(
        HStack() {
           Spacer()
           Image(systemName: "plus")
               .resizable()
               .frame(width: 16, height: 16)
           Spacer()
        }.frame(width: 44, height: 44),    
        destination: NewView()
    )
}

или если вам нравится пространство вокруг вашего изображения и пусть оно заполняет все остальное, вы можете:

var body: some View {
    PresentationButton(
        Image(systemName: "plus")
            .resizable()
            .padding(14)
            .frame(width: 44, height: 44),  
        destination: NewView()
    )
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...