ios - 为什么我的 leftBarButtonItem 在 iOS 11.4 上呈现得更小

标签 ios uinavigationbar ios11 uibarbuttonitem uinavigationitem

在我们的应用中,我们在 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

iOS11.4

enter image description here

iOS10.3.1

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

我通过创建如下所示的自定义按钮 View 解决了这个问题:

   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 资源在项目中创建 UIImage

最佳答案

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

事实证明 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

关于ios - 为什么我的 leftBarButtonItem 在 iOS 11.4 上呈现得更小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50966415/

相关文章:

objective-c - UINavigationBar topItem/items 似乎在后面双弹出

ios - MFMailComposeViewController 的 UINavigationBar 不一致地显示正确的图像/颜色

ios - 为什么这个 JSON 使用 NSJSONSerialization 无效?

iphone - 如何在 iOS 中以编程方式截取屏幕截图?

ios - 导航按钮文字阴影不出现 iOS 7

ios - 立即切换输入类型时如何在iOS 11中获取表情符号键盘的高度?

objective-c - 如何在 Objective-C 中将 heic 转换为 jpg

ios - iPhone X 的 UIView 高度没有扩展

ios - redirect_uri 的参数值无效

iOS 6.0.1 模拟器