UIBarButtonItem在切换暗模式/亮模式时不会自动更改图像

时间:2020-03-27 02:42:45

标签: ios13 ios-darkmode

我正在尝试将暗模式支持集成到我的应用中。但是,当为UIBarButtonItem设置图像图标时,它似乎仅在第一次显示UIBarButtonItem时起作用,而当我在暗模式/亮模式之间切换时,它并没有改变。

与其他UIButton一起使用该图像时,它可以正常工作。 所以我想知道我是否缺少什么?

P / s:我必须使用该技巧来更新图像:

    let item: UIBarButtonItem = UIBarButtonItem()  
    let button: UIButton = UIButton(frame: CGRect(x: 0, y: 0, width: 26, height: 19))  
    button.setImage(UIImage(named: "hamburger"), for: .normal)  
    button.addTarget(self, action: action, for: .touchUpInside)  
    item.customView = button  

1 个答案:

答案 0 :(得分:1)

似乎是iOS中的错误,但是解决此问题的一种方法是使用traitCollection委托方法来手动设置正确的图像。

override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
    super.traitCollectionDidChange(previousTraitCollection)
    
    let imageAsset = UIImage(named: "YOUR_IMAGE_NAME")?.imageAsset
    let resolvedImage = imageAsset?.image(with: traitCollection)
    
    self.YOUR_BUTTON.image = resolvedImage
}