阻止SwiftUI系统映像动态更改导航栏项目的大小

时间:2019-06-16 17:17:13

标签: ios swiftui

我想使用SwiftUI中的系统加号图像在导航栏项中添加加号按钮。但是,当辅助功能字体更改时,我无法阻止系统映像动态缩放。

如何停止调整大小,使其像标准的UINavigationBarButtonItem系统加按钮一样?

对于大型字体类型,按住导航栏按钮的可访问性功能也不像UIKit那样起作用。

真正令人沮丧的是,使用SwiftUI无法完成可能很简单的事情,并且尚未考虑可访问性。 SwiftUI教程配置文件栏按钮也不适用于大字体。 (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 :(得分:0)

您应该构建自己真正想要的。因此,如果您想在额外的hitTest区域中使用16x16图像,则可以这样构建:

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()
    )
}