带有自定义UIButton的UIBarButtonim在iOS上不可见<;=10

带有自定义UIButton的UIBarButtonim在iOS上不可见<;=10,ios,uiview,uinavigationcontroller,uibutton,uibarbuttonitem,Ios,Uiview,Uinavigationcontroller,Uibutton,Uibarbuttonitem,我需要在导航控制器的左侧为我的应用程序创建一个“汉堡菜单”按钮,但由于导航控制器是透明的,我需要在图标上有一个阴影 因此,我创建了一个自定义UIButton,其中包含一个图像、一个阴影,并将其添加为UIBarButtonItem上的自定义视图,如下所示: let menuButton = UIButton(type: .custom) menuButton.addTarget(self, action: #selector(showSideMenu), for: .touchUpInside)

我需要在导航控制器的左侧为我的应用程序创建一个“汉堡菜单”按钮,但由于导航控制器是透明的,我需要在图标上有一个阴影

因此,我创建了一个自定义UIButton,其中包含一个图像、一个阴影,并将其添加为UIBarButtonItem上的自定义视图,如下所示:

let menuButton = UIButton(type: .custom)
menuButton.addTarget(self, action: #selector(showSideMenu), for: .touchUpInside)
menuButton.setImage(#imageLiteral(resourceName: "menu_white"), for: .normal)
menuButton.tintColor = UIColor.white
menuButton.layer.masksToBounds = false
menuButton.layer.shadowColor = UIColor.black.cgColor
menuButton.layer.shadowOpacity = 1.0
menuButton.layer.shadowRadius = 5
menuButton.layer.shadowOffset = CGSize(width: 0.0, height: 1.0)

self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: menuButton)
上面的代码在iOS 11上运行得非常好,但是当我在iOS 9和iOS 10(模拟器和真实设备)上测试我的应用程序时,菜单图标是不可见的。它是可点击的,并按预期工作,但没有可见的图标

在视图层次调试器中,我可以看到宽度和高度为0的UIButton,而在ios 11中,我可以看到带有嵌入式UIButton的普通UIButtonBarStackview


关于如何解决这个问题以及为什么会发生这种情况,有什么想法吗?多谢各位

请提及按钮框

 let menuButton =  UIButton(frame: CGRect(x: 0, y: 0, width: 70, height: 40))

这可能会对您有所帮助,谢谢您

请提及按钮框

 let menuButton =  UIButton(frame: CGRect(x: 0, y: 0, width: 70, height: 40))

这可能会对您有所帮助,谢谢您

您只需调用menuButton.sizeToFit()就可以了。

您只需调用menuButton.sizeToFit()就可以了。

非常感谢您!这就成功了。我忘了将按钮框设置为(0,0,0,0)。我认为ios11负责设置框架本身,但较旧的版本没有。再次感谢:)非常感谢!这就成功了。我忘了将按钮框设置为(0,0,0,0)。我认为ios11负责设置框架本身,但较旧的版本没有。再次感谢:)实际上还没有测试过,但它应该可以工作。逻辑是相同的,设置按钮的框架。谢谢还没有实际测试过,但应该可以。逻辑是相同的,设置按钮的框架。谢谢