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

Ios 防止SwiftUI系统映像动态更改导航栏项目的大小,ios,swiftui,Ios,Swiftui,我想使用SwiftUI中的system plus图像向导航栏项目添加一个加号按钮。但是,当辅助功能字体更改时,我无法阻止系统映像动态缩放 我怎样才能阻止它调整大小,使它像一个标准的UINavigationBarButtonItem系统plus按钮一样工作 为大字体类型保留导航栏按钮的辅助功能也不像UIKit那样工作 真正令人沮丧的是,SwiftUI无法完成一件可能很简单的事情,而且还没有考虑可访问性。SwiftUI教程配置文件栏按钮也不适用于大字体。(PS SwiftUI是未来) 以下是我的尝试

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

我怎样才能阻止它调整大小,使它像一个标准的UINavigationBarButtonItem系统plus按钮一样工作

为大字体类型保留导航栏按钮的辅助功能也不像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())
    }
}

你应该建造你想要的东西。因此,如果您想使用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()
    )
}

我不认为你能阻止它调整大小。系统会自动调整
.navigationBarItems
的大小,以支持iOS上的动态字体。这不就是它应该做的吗?@Edward你想缩小导航栏中图像的大小吗?@Let's_Create是的,我是。我希望它的行为像UIKit中的system+bar按钮。也许我应该改为使用它?在给定的代码中,我可以通过减少.frame(宽度:25,高度:25)的值来减小它的大小。这是您想要的吗?但是您仍然需要它按照建议至少为44点乘以44点