只有返回按钮和透明背景的导航

Posted

技术标签:

【中文标题】只有返回按钮和透明背景的导航【英文标题】:Navigation with only Back Button and transparent background 【发布时间】:2016-02-11 06:03:30 【问题描述】:

我曾尝试实现嵌入在我的视图控制器中的导航控制器。它按预期工作。

但我的要求略有不同,它只需要一个后退按钮,并且在所有屏幕中都有一个带有徽标图像背景的顶部横幅。因此,如果我尝试实现后退按钮,它会占用覆盖徽标/顶部横幅的导航栏的空间。

有什么办法可以克服这种情况。

【问题讨论】:

【参考方案1】:

这似乎很容易,我的应用程序中也使用了以下代码:-

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

【讨论】:

感谢 Vizlix。我对ios环境很陌生。我应该在哪里尝试此代码? 在根视图控制器的 viewdidload() 中写入。 它有效。 :) 任何想法如何从按钮中删除后退文本,因为只需要显示图标【参考方案2】:

我不知道有没有其他选择。但过去我和你有同样的情况。

我已经使用 UIView 创建了自定义 .XIB。并将子视图添加为导航栏。

所以,在我看来,最好的选择是使用 UINavigation 栏的高度创建自定义 .XIB。并添加为子视图。

这是实现它的步骤。

1) 取.h文件、.m文件和UIView的Xib文件,大小为width 46身高44

2) 根据您的设计设置约束和布局。

3) 在 .h 文件中为返回按钮提供出口。

4) 在 customview.h 文件中创建一个委托。在 .m 文件中设置方法。

5) 然后在您的 viewcontroller.h 文件中导入 customview.h 文件。同样不要忘记在视图控制器接口中定义委托。

6) 现在在 Viewdidload 方法中添加 customheaderview 作为子视图。

#define macro_name (Define in constantfile as macro if you don't want to write whole code again and again)

NavigationHeaderview *customView = [NavigationHeaderview CustomNavigation:self.navigationController.navigationBar.frame.origin.x y:self.navigationController.navigationBar.frame.origin.y width:self.navigationController.navigationBar.frame.size.width height:self.navigationController.navigationBar.frame.size.height];
customView.delegate=self;
[self.navigationController.view addSubview:customView];

7) 使用 headerview 的委托方法在所有视图控制器中访问它。

现在您可以像在 UIView 中一样在导航栏中执行任何操作。

注意:- 我知道这是一个乏味的过程。但是当您需要导航栏中的 3 或 4 个按钮并在其上设置 Action 时,这是值得的。或者导航栏中的整个项目需要相同的设计布局..

【讨论】:

感谢巴达尔为我解释事情 欢迎。乐于助人。

以上是关于只有返回按钮和透明背景的导航的主要内容,如果未能解决你的问题,请参考以下文章

自定义iOS导航栏背景,标题和返回按钮文字颜色

自定义iOS7导航栏背景,标题和返回按钮文字颜色

仅使用后退按钮和透明背景导航

Chrome Mobile,更改系统导航栏(返回、主页、最近按钮)背景颜色?

转自定义iOS7导航栏背景,标题和返回按钮文字颜色 -- 不错不错!!

iOS 11 使用方法替换(Method Swizzling),去掉导航栏返回按钮的文字