【问题标题】:UIBarButtonItem with custom UIButton is invisible on iOS <= 10带有自定义 UIButton 的 UIBarButtonItem 在 iOS <= 10 上不可见
【发布时间】:2018-12-26 01:42:32
【问题描述】:

我需要在我的 navigationController 左侧为我的应用创建一个“汉堡菜单”按钮,但由于 NavCon 是透明的,我需要在我的图标上添加阴影。

因此,我创建了一个带有图像、阴影的自定义 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 和 10(模拟器和真实设备)上测试我的应用程序时,菜单图标是不可见的。它可以点击并按预期工作,但没有可见的图标。

在 View Hierarchy Debugger 中,我可以看到宽度和高度为 0 的 UIButton,而在 ios 11 中,我可以看到带有嵌入式 UIButton 的普通 UIButtonBarStackview。

关于如何解决这个问题以及为什么会发生这种情况的任何想法?非常感谢!

【问题讨论】:

    标签: ios uiview uinavigationcontroller uibutton uibarbuttonitem


    【解决方案1】:

    您只需调用 menuButton.sizeToFit() 即可。

    【讨论】:

    • 还没有实际测试过,但它应该可以工作。逻辑相同,设置按钮的框架。谢谢!
    【解决方案2】:

    请提及按钮框架

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

    可能对你有帮助,谢谢

    【讨论】:

    • 非常感谢!这成功了。我忘记将按钮框架设置为 (0,0,0,0)。我认为 ios 11 负责设置框架本身,但旧版本没有。再次感谢:)
    猜你喜欢
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 2016-08-11
    相关资源
    最近更新 更多