iOS滑动全屏实现返回功能

iOS滑动全屏实现返回功能,第1张

概述iOS滑动全屏实现返回功能 本文实例为大家分享了iOS滑动全屏实现返回功能的具体代码,供大家参考,具体内容如下 系统自带的滑动返回功能,只能滑动边缘返回,而我们希望通过滑动全屏实现返回功能. 定义BaseNavigationController来取代UINavigationController // BaseNavigationController.h #import <UIKit/UIKit.h> @interface BaseNavigationController : UINavigationContro ...

本文实例为大家分享了iOS滑动全屏实现返回功能的具体代码,供大家参考,具体内容如下

系统自带的滑动返回功能,只能滑动边缘返回,而我们希望通过滑动全屏实现返回功能。

定义BaseNavigationController来取代UINavigationController

// BaseNavigationController.h#import <UIKit/UIKit.h>@interface BaseNavigationController : UINavigationController@end// BaseNavigationController.m#import "BaseNavigationController.h"@interface BaseNavigationController () <UIGestureRecognizerDelegate>@end@implementation BaseNavigationController#pragma mark - 系统方法+ (voID)load{ UINavigationbar *navbar = [UINavigationbar appearanceWhenContainedIn:self,nil]; // 只要是通过模型设置,都是通过富文本设置 // 设置导航条标题 => UINavigationbar NSMutableDictionary *attrs = [NSMutableDictionary dictionary]; attrs[NSFontAttributename] = [UIFont boldSystemFontOfSize:20.0]; [navbar setTitleTextAttributes:attrs]; // 设置导航条背景图片 [navbar setBackgroundImage:[UIImage imagenamed:@"navigationbarBackgrounDWhite"] forbarMetrics:UIbarMetricsDefault];}- (voID)vIEwDIDLoad { [super vIEwDIDLoad]; // Do any additional setup after loading the vIEw. // 自己控制返回手势// self.interactivePopGestureRecognizer.delegate = self;// NSLog(@"self.interactivePopGestureRecognizer : %@",self.interactivePopGestureRecognizer);// NSLog(@"self.interactivePopGestureRecognizer.delegate : %@",self.interactivePopGestureRecognizer.delegate); // 全屏返回手势,而不是边缘返回手势 UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self.interactivePopGestureRecognizer.delegate action:@selector(handleNavigationTransition:)]; [self.vIEw addGestureRecognizer:pan]; // 控制手势什么时候触发,只有非根控制器才需要出发手势 pan.delegate = self; // 禁止之前手势 self.interactivePopGestureRecognizer.enabled = NO;}/** * self.interactivePopGestureRecognizer : <UIScreenEdgePanGestureRecognizer: 0x7fb57dc23510; state = Possible; delaystouchesBegan = YES; vIEw = <UILayoutContainerVIEw 0x7fb57dc220e0>; target= <(action=handleNavigationTransition:,target=<_UINavigationInteractiveTransition 0x7fb57dc1c570>)>> * self.interactivePopGestureRecognizer.delegate : <_UINavigationInteractiveTransition: 0x7fb57dc1c570> */#pragma mark - UIGestureRecognizerDelegate- (BOol)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceivetouch:(UItouch *)touch{ // 当不是根控制器时才会触发返回手势 return (self.childVIEwControllers.count > 1);}#pragma mark - 重写- (voID)pushVIEwController:(UIVIEwController *)vIEwController animated:(BOol)animated{ if (self.childVIEwControllers.count > 0) { // 代表不是根控制器  // 自定义返回按钮覆盖了系统的返回手势  vIEwController.navigationItem.leftbarbuttonItem = [UIbarbuttonItem setBackbuttonItemWithImage:[UIImage imagenamed:@"navigationbuttonReturn"] highlightedImage:[UIImage imagenamed:@"navigationbuttonReturnClick"] target:self action:@selector(backClick) Title:@"返回"]; } [super pushVIEwController:vIEwController animated:animated];}- (voID)backClick{ [self popVIEwControllerAnimated:YES];}@end

UIbarbuttonItem+item

// UIbarbuttonItem+item.h#import <UIKit/UIKit.h>@interface UIbarbuttonItem (item)+ (UIbarbuttonItem *)setbarbuttonItemWithImage:(UIImage *)image highlightedImage:(UIImage *)highlightedImage target:(ID)target action:(SEL)action;+ (UIbarbuttonItem *)setbarbuttonItemWithImage:(UIImage *)image selectedImage:(UIImage *)selectedImage target:(ID)target action:(SEL)action;+ (UIbarbuttonItem *)setBackbuttonItemWithImage:(UIImage *)image highlightedImage:(UIImage *)highlightedImage target:(ID)target action:(SEL)action Title:(Nsstring *)Title;@end// UIbarbuttonItem+item.m#import "UIbarbuttonItem+item.h"@implementation UIbarbuttonItem (item)+ (UIbarbuttonItem *)setbarbuttonItemWithImage:(UIImage *)image highlightedImage:(UIImage *)highlightedImage target:(ID)target action:(SEL)action{ // 1.leftbarbuttonItem UIbutton *leftbutton = [UIbutton buttonWithType:UIbuttonTypeCustom]; [leftbutton se@R_404_5411@:image forState:UIControlStatenormal]; [leftbutton se@R_404_5411@:highlightedImage forState:UIControlStateHighlighted]; [leftbutton sizetoFit]; // 按钮点击事件 [leftbutton addTarget:target action:action forControlEvents:UIControlEventtouchUpInsIDe]; // 由于使用button会使得点击范围增大,所以将button放进vIEw中,然后赋值 UIVIEw *leftVIEw = [[UIVIEw alloc] initWithFrame:leftbutton.bounds]; [leftVIEw addSubvIEw:leftbutton]; return [[UIbarbuttonItem alloc] initWithCustomVIEw:leftVIEw];}+ (UIbarbuttonItem *)setBackbuttonItemWithImage:(UIImage *)image highlightedImage:(UIImage *)highlightedImage target:(ID)target action:(SEL)action Title:(Nsstring *)Title{ // 设置返回按钮 UIbutton *backbutton = [UIbutton buttonWithType:UIbuttonTypeCustom]; [backbutton setTitle:Title forState:UIControlStatenormal]; [backbutton se@R_404_5411@:image forState:UIControlStatenormal]; [backbutton se@R_404_5411@:highlightedImage forState:UIControlStateHighlighted]; [backbutton setTitlecolor:[UIcolor blackcolor] forState:UIControlStatenormal]; [backbutton setTitlecolor:[UIcolor redcolor] forState:UIControlStateHighlighted]; [backbutton addTarget:target action:action forControlEvents:UIControlEventtouchUpInsIDe]; backbutton.contentEdgeInsets = UIEdgeInsetsMake(0,-15,0); [backbutton sizetoFit]; return [[UIbarbuttonItem alloc] initWithCustomVIEw:backbutton];}+ (UIbarbuttonItem *)setbarbuttonItemWithImage:(UIImage *)image selectedImage:(UIImage *)selectedImage target:(ID)target action:(SEL)action{ // 1.leftbarbuttonItem UIbutton *leftbutton = [UIbutton buttonWithType:UIbuttonTypeCustom]; [leftbutton se@R_404_5411@:image forState:UIControlStatenormal]; [leftbutton se@R_404_5411@:selectedImage forState:UIControlStateSelected]; [leftbutton sizetoFit]; // 按钮点击事件 [leftbutton addTarget:target action:action forControlEvents:UIControlEventtouchUpInsIDe]; // 由于使用button会使得点击范围增大,所以将button放进vIEw中,然后赋值 UIVIEw *leftVIEw = [[UIVIEw alloc] initWithFrame:leftbutton.bounds]; [leftVIEw addSubvIEw:leftbutton]; return [[UIbarbuttonItem alloc] initWithCustomVIEw:leftVIEw];}@end

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

总结

以上是内存溢出为你收集整理的iOS滑动全屏实现返回功能全部内容,希望文章能够帮你解决iOS滑动全屏实现返回功能所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1109869.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存