为啥我的 leftBarButtonItem 在 iOS 11.4 上变得更小

Posted

技术标签:

【中文标题】为啥我的 leftBarButtonItem 在 iOS 11.4 上变得更小【英文标题】:Why is my leftBarButtonItem rendered smaller on iOS 11.4为什么我的 leftBarButtonItem 在 iOS 11.4 上变得更小 【发布时间】:2018-06-21 10:36:39 【问题描述】:

在我们的应用程序中,我们在 UINavigationBar 中显示了一个汉堡项目。 我们使用leftBarButtonItem 作为展示它的地方。

这是创建汉堡按钮的代码。

    let barItem = UIBarButtonItem(image: UIImage(named: "IconBurger"), style: .plain, target: target, action: selector)
    barItem.tintColor = .tintColor
    barItem.adjustAccessibility()

ios 11.4 和 iOS 11.3.1 上导致以下结果

iOS11.4

iOS10.3.1

正如你所见,汉堡按钮在 iOS11.4 上以某种方式缩小了

我通过创建这样的自定义按钮视图来解决此问题:

   let button = UIButton(type: .custom)
   button.setImage(UIImage(named: "IconBurger"), for: .normal)
   button.addTarget(target, action: selector, for: .touchUpInside)
   let barItem = UIBarButtonItem(customView: button)
   barItem.tintColor = .tintColor
   barItem.adjustAccessibility()

使用此版本,汉堡按钮在 iOS 11.4 上再次看起来不错。 但是现在回到 10.3.1 时,我感到震惊,因为汉堡按钮根本不再呈现。

(在这里想象一下全黑的图像)

我最终写了一些丑陋的东西,比如

if #available(iOS 11.4, *) 
   // show new version
 else 
   // show old version

但我希望不会是这样! 有没有人有类似经历或者可以给点建议?

附加信息:我们正在使用 pdf 资产在我们的项目中创建 UIImages。

【问题讨论】:

【参考方案1】:

好的。我的同事找到了我想在此处记录的解决方案。

原来在 上没有调用 sizeToFit()

    let button = UIButton(type: .custom)
    let image = UIImage(named: "IconBurger")
    button.setImage(image, for: .normal)
    button.addTarget(target, action: selector, for: .touchUpInside)
    button.sizeToFit()
    let item = UIBarButtonItem(customView: button)
    item.adjustAccessibility()
    return item

【讨论】:

以上是关于为啥我的 leftBarButtonItem 在 iOS 11.4 上变得更小的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式将 leftBarButtonItem 添加到应用程序

第一个 leftBarButtonItem 隐藏

LeftBarButtonItem 有两个按钮。一键不响应点击

如何设置大小 leftBarButtonItem?

如何更改 UINavigation leftBarButtonItem 的颜色

将 leftBarButtonItem 添加到导航栏的问题