ios navigationcontroller 怎么改背景颜色

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios navigationcontroller 怎么改背景颜色相关的知识,希望对你有一定的参考价值。

  改变uinavigationcontroller的背景颜色的方法
  找到了方法,附上代码方便直接
  1 //选择自己喜欢的颜色
  UIColor * color = [UIColor greenColor];

  2 //这里我们设置的是颜色,还可以设置shadow等,具体可以参见api
  NSDictionary * dict=[NSDictionary dictionaryWithObject:color forKey:UITextAttributeTextColor];

  3 //大功告成
  self.navigationBar.titleTextAttributes = dict;
参考技术A [UINavigationBar appearance] setBarTintColor:[UIColor colorwith:bulecolor]];类似这样的

iOS 禁用 NavigationController 后退按钮的动画

【中文标题】iOS 禁用 NavigationController 后退按钮的动画【英文标题】:iOS disable animation for NavigationController back button 【发布时间】:2015-11-05 10:20:40 【问题描述】:

当我在 NavigationController 中使用后退按钮弹出 ViewController 时,我想禁用动画。

我试过了:

override func viewWillDisappear(animated: Bool) 
    super.viewWillDisappear(false)

但它仍然有动画。

【问题讨论】:

【参考方案1】:

在您想要拥有该按钮的控制器中:

override func viewDidLoad() 
    super.viewDidLoad()
    self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Back", style: .Plain, target: self, action: #selector(backTapped))


@objc func backTapped(sender: UIBarButtonItem) 
    navigationController?.popViewControllerAnimated(false)

考虑到这种方式,您将丢失后退按钮上的

【讨论】:

然后我没有得到 没错。我不知道是否可以使用 您覆盖了默认按钮,无法保留箭头,在这种情况下,您必须将箭头添加为新按钮的图像。 没错,在我提供的解决方案中,您覆盖了按钮,儿子您丢失了 这种语法在 Swift 3/4 中有所改变。本质上,您需要将操作中的参数更改为#selector(backTapped),并在函数声明之前添加@objc。来源:***.com/questions/39205613/…【参考方案2】:

只需在你必须弹出的视图控制器上使用它

override func viewWillDisappear(_ animated: Bool) 
    super.viewWillDisappear(false)
    UIView.setAnimationsEnabled(false)

或者

override func viewDidDisappear(_ animated: Bool) 
    super.viewDidDisappear(false)
    UIView.setAnimationsEnabled(false)

视图动画被完全删除。并且在弹出后不要忘记在您的下一个视图控制器上添加UIView.setAnimationsEnabled(true)

【讨论】:

【参考方案3】:

在哪个 ViewController 中你不想要动画, 添加以下行

override func viewWillDisappear(_ animated: Bool) 
    super.viewWillDisappear(animated)
    UIView.setAnimationsEnabled(false)

override func viewDidDisappear(_ animated: Bool) 
    super.viewWillDisappear(animated)
    UIView.setAnimationsEnabled(true)

【讨论】:

【参考方案4】:

如果你想自定义动画,可以试试这个:

override func viewDidLoad() 
    super.viewDidLoad()

navigationController?.navigationBar.tintColor = UIColor.white
    self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "◁", style: .plain, target: self, action: #selector(backTapped(sender:)))


// 带有淡入淡出动画

@objc func backTapped(sender: UIBarButtonItem) 
    let transition: CATransition = CATransition()
    transition.duration = 0.5
    transition.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeIn)
    transition.type = CATransitionType.fade
    self.navigationController!.view.layer.add(transition, forKey: nil)
    navigationController?.popViewController(animated: false)
  

//“◁”以这种方式添加:编辑 -> 表情符号和符号

【讨论】:

【参考方案5】:

viewWillDisappear() 不处理动画,它只是。

如果您使用的是UINavigationController

self.navigationController?.popViewController(animated: false)

如果你只是使用UIViewController

self.dismissViewControllerAnimated(false, completion: nil)

【讨论】:

【参考方案6】:

你可以试试这个

override func viewWillDisappear(animated: Bool) 
    self.navigationController?popViewControllerAnimated(false)

【讨论】:

以上是关于ios navigationcontroller 怎么改背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

ios:关于 NavigationController 的问题。强制与否?

iOS - Navigationcontroller 与带有导航栏的 Viewcontroller

IOS 6 navigationController 导航栏

iOS - 在 navigationController 上嵌入 viewController

在 iOS 上的 navigationController 推送上更改 contentSizeForViewInPopover

iOS6 中奇怪的 SplitView/NavigationController 行为