LeftBarbuttonItem左滑返回&UINavigationBar透明

一. 自定义了leftBarbuttonItem左滑返回手势失效了怎么办?

1. CustomViewController: UIViewController, UIGestureRecognizerDelegate

self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "back", style: .Plain, target: self, action: #selector(onBack))
self.navigationController?.interactivePopGestureRecognizer?.delegate = self

 

2. 使用FDFullscreenPopGesture 

Use cocoapods: pod 'FDFullscreenPopGesture

导入: import FDFullscreenPopGesture 就可以左滑返回

禁止返回:

  To disable this pop gesture of a navigation controller:

  navigationController.fd_fullscreenPopGestureRecognizer.enabled = NO;

  To disable this pop gesture of a view controller:

  viewController.fd_interactivePopDisabled = YES;

如果UINavigationController's -setNavigationBarHidden:animated: method, instead, use view controller's specific API to hide its bar:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.fd_prefersNavigationBarHidden = NO;
}

 

二. 怎么把我的navigationbar弄成透明的而不是带模糊的效果?

1. 可以隐藏navigationbar

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    self.navigationController?.setNavigationBarHidden(true, animated: true)
}
    
override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated)
    self.navigationController?.setNavigationBarHidden(false, animated: true)
}

 

2. 设置navigationBar图片

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)
    self.navigationController?.navigationBar.shadowImage = UIImage()
}

override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated)
    self.navigationController?.navigationBar.setBackgroundImage(nil, forBarMetrics: .Default)
    self.navigationController?.navigationBar.shadowImage = nil
}

 

转载于:https://www.cnblogs.com/chrisbin/p/5404757.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 iOS 开发中的 `UINavigationBar`,可以通过 `UINavigationBarDelegate` 协议来监听导航栏中侧按钮的点击事件。具体实现步骤如下: 1. 首先在导航栏侧添加一个按钮,可以使用 `UIBarButtonItem` 的 `initWithImage:style:target:action:` 方法创建,将按钮的 `target` 设置为当前控制器,将 `action` 设置为一个方法,用于处理按钮点击事件。 2. 在当前控制器中实现 `UINavigationBarDelegate` 协议的 `navigationBar:shouldPopItem:` 方法,该方法会在导航栏中的按钮被点击时触发。 3. 在 `navigationBar:shouldPopItem:` 方法中判断当前导航栏中的视图控制器是否为根视图控制器,如果是则返回 NO,否则返回 YES。 4. 在 `shouldPopItem:` 方法中处理完点击事件后,调用 `popViewControllerAnimated:` 方法返回上一个视图控制器。 示例代码如下: ```swift class ViewController: UIViewController, UINavigationBarDelegate { override func viewDidLoad() { super.viewDidLoad() let leftButton = UIBarButtonItem.init(image: UIImage(named: "back"), style: .plain, target: self, action: #selector(leftButtonClicked(sender:))) self.navigationItem.leftBarButtonItem = leftButton } @objc func leftButtonClicked(sender: UIBarButtonItem) { // 处理侧按钮点击事件 } func navigationBar(_ navigationBar: UINavigationBar, shouldPop item: UINavigationItem) -> Bool { if self.navigationController?.viewControllers.count == 1 { return false } return true } } ``` 在上面的代码中,我们首先在 `viewDidLoad` 方法中创建了一个侧按钮,并将其添加到导航栏中。在 `leftButtonClicked` 方法中我们可以处理侧按钮的点击事件。 在 `navigationBar:shouldPopItem:` 方法中,我们通过判断当前视图控制器是否为根视图控制器来决定是否返回上一个视图控制器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值