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

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

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

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

【问题讨论】:

    标签: ios swift uinavigationcontroller ios-autolayout


    【解决方案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 时,这是值得的。或者导航栏中的整个项目需要相同的设计布局..

    【讨论】:

    • 感谢巴达尔为我解释事情
    • 欢迎。乐于助人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    • 2020-04-08
    • 2016-08-02
    相关资源
    最近更新 更多