我曾尝试实现嵌入View Controller的导航控制器。它按预期工作。
但我的要求略有不同,只需要一个后退按钮,并且在所有屏幕中已经有一个带有徽标图像背景的顶部横幅。因此,如果我尝试实现后退按钮,它会占用导航栏的空间,其中包含徽标/顶部横幅。
有没有办法克服这种情况。
答案 0 :(得分:7)
这似乎很简单,我的应用程序中使用了以下代码: -
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.translucent = true
self.navigationController?.view.backgroundColor = UIColor.clearColor()
修改: - 强>
删除后退按钮文字: -
navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .Plain, target: nil, action: nil)
Swift 3.0
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true
self.navigationController?.view.backgroundColor = UIColor.clear
答案 1 :(得分:0)
我不知道是否还有其他选择。但在过去,我和你一样。
我用UIView创建了自定义.XIB。并将子视图添加为导航栏。
所以,根据我的说法,最好的选择是使用UINavigation栏的高度创建自定义.XIB。并添加为子视图。
以下是您如何实现目标的步骤。
1)获取 .m 文件, .m 文件和UIView的 Xib ,其中宽度为46 和身高44
2)根据您的设计设置约束和布局。
3)在.h文件中为“后退”按钮添加插座。
4)在customview.h文件中创建一个委托。在.m文件中设置方法。
5)然后在viewcontroller.h文件中导入customview.h文件。同样不要忘记在viewcontrollers接口中定义委托。 <>
6)现在在Viewdidload方法中添加customheaderview作为子视图。
O(n)
7)使用headerview的委托方法在所有视图控制器中访问它。
现在,您可以像在UIView中一样在导航栏中执行任何操作。
注意: - 我知道这是一个繁琐的过程。但是当你在导航栏中需要3或4个按钮并在其上设置动作时,它是值得的。或者需要导航栏中整个项目的相同设计布局。