【问题标题】:Prevent SwiftUI System Image from dynamically changing size for navigation bar item防止 SwiftUI 系统图像动态更改导航栏项的大小
【发布时间】:2019-06-16 17:17:13
【问题描述】:

我想在 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())
    }
}

【问题讨论】:

  • 我认为您无法阻止它调整大小。 .navigationBarItems 由系统自动调整大小以支持 iOS 上的动态字体。这不就是它应该做的吗?
  • @Edward 你想缩小导航栏中图片的大小吗?
  • @Let's_Create 是的,我是。我希望它的行为类似于 UIKit 中的系统 + 栏按钮。也许我应该改用它?
  • 在给定的代码中,我可以通过减小 .frame(width: 25, height: 25) 的值来减小它的大小这是你想要的吗?
  • 但是你仍然需要它至少是推荐的 44 点乘 44 点

标签: ios swiftui


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-06-28
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    相关资源
    最近更新 更多