亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS中仿QQ側滑菜單功能

2020-07-26 02:44:51
字體:
來源:轉載
供稿:網友

UITabBarController做QQ側滑菜單效果:

首先要了解UITabBarController的層級結構:

UITabBarController加載的其它UIViewController的View都是被添加在UITransitionView上(這是一個私有API),UITransitionView在self.view的0層,UITabBar在的第一層。

所以我的思路是這樣的:

UITransitionView與UITabBar轉移到一個新的View1上去,作為滑動的部分;

在View1與self.view之間再添加一個View2,作為菜單的容器;

給View1添加相應的手勢響應;

代碼:

#import <UIKit/UIKit.h>@protocol SlideTab_VC_TCVDelegate <NSObject>@optional-(void)didOpenMenu:(UIView*)menu;-(void)didCloseMenu:(UIView*)menu;@end@interface SlideTab_VC : UITabBarController@property(strong, nonatomic)UIView *mMenuV;@property(weak, nonatomic)id <SlideTab_VC_TCVDelegate> mDelegate;-(void)openMenu;-(void)closeMenu;@end#import "SlideTab_VC.h"#define DEVICE_W [UIScreen mainScreen].bounds.size.width@interface SlideTab_VC ()<UITabBarDelegate>{ CGFloat _centerMaxX;}@property(strong, nonatomic)UIView *mTransitionView;@property(strong, nonatomic)UITapGestureRecognizer *mTapGester;@property(assign, nonatomic)BOOL mMenuIsOpen;@property(strong, nonatomic)UITabBar *mTabBar;@end@implementation SlideTab_VC- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.view.backgroundColor = [UIColor purpleColor]; _mMenuIsOpen = NO; _centerMaxX = DEVICE_W*3/2-80.0f; [self initMTransitionView]; [self addGestureForMTransitionView];}#pragma mark 菜單懶加載-(void)setMMenuV:(UIView *)mMenuV{ if (mMenuV!=nil) {  _mMenuV = mMenuV;  [self.view insertSubview:_mMenuV atIndex:0]; }}#pragma mark 打開菜單-(void)openMenu{ CGPoint center = self.mTransitionView.center; center.x = _centerMaxX; [UIView animateWithDuration:0.15f animations:^{  self.mTransitionView.center = center;  if (_mDelegate != nil&& [_mDelegate respondsToSelector:@selector(didOpenMenu:)]) {  [_mDelegate didOpenMenu:_mMenuV]; } }]; [self mTransitionSubViewsEnable:NO];}#pragma mark 關閉菜單-(void)closeMenu{ CGPoint center = self.mTransitionView.center; center.x = DEVICE_W/2; [UIView animateWithDuration:0.15f animations:^{  self.mTransitionView.center = center; } completion:^(BOOL finished) {  [self mTransitionSubViewsEnable:YES];  if (_mDelegate != nil&& [_mDelegate respondsToSelector:@selector(didCloseMenu:)]) {  [_mDelegate didCloseMenu:_mMenuV]; } }];}#pragma mark Transition用戶交互使能-(void)mTransitionSubViewsEnable:(BOOL)enable{ for (UIView *tmp in self.mTransitionView.subviews) {  tmp.userInteractionEnabled = enable; } if (enable) {  [self.mTransitionView removeGestureRecognizer:_mTapGester]; }else{  [self.mTransitionView addGestureRecognizer:_mTapGester]; }}#pragma mark 配置mTransitionView-(void)initMTransitionView{ for (UIView *tmp in self.view.subviews) {  [tmp removeFromSuperview];  [self.mTransitionView addSubview:tmp]; } [self.view addSubview:self.mTransitionView];}#pragma mark 拖動手勢動作-(void)panAction:(UIPanGestureRecognizer*)pan{ CGPoint location = [pan translationInView:pan.view.superview]; CGPoint center = self.mTransitionView.center; if (pan.state==UIGestureRecognizerStateEnded) {  if (center.x<_centerMaxX*0.5+DEVICE_W*0.25){   [self closeMenu];  }else{   [self openMenu];  } }else if(pan.state==UIGestureRecognizerStateChanged){  if (location.x<0) {//向左滑   center.x = center.x+location.x<=DEVICE_W/2? DEVICE_W/2 : center.x+location.x;  }else{   center.x = center.x+location.x>=_centerMaxX? _centerMaxX : center.x+location.x;  }  self.mTransitionView.center = center;  [pan setTranslation:CGPointMake(0, 0) inView:pan.view.superview]; }}#pragma mark 添加手勢-(void)addGestureForMTransitionView{ UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panAction:)]; [_mTransitionView addGestureRecognizer:pan]; _mTapGester = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapAction)];}#pragma mark--懶加載-(UIView *)mTransitionView{ if (_mTransitionView==nil) {  _mTransitionView = [[UIView alloc]initWithFrame:self.view.bounds]; } return _mTransitionView;}-(void)tapAction{ CGFloat x = _mTransitionView.center.x; if (x>=_centerMaxX) {  [self closeMenu]; }}@end

總結

以上所述是小編給大家介紹的iOS中仿QQ側滑菜單功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲综合国产精品| 久久久久久久久久久91| 九九热精品视频国产| 中文字幕日韩精品有码视频| 97碰碰碰免费色视频| 免费91麻豆精品国产自产在线观看| 91成人天堂久久成人| 久久久久久噜噜噜久久久精品| 深夜福利亚洲导航| 欧美老女人bb| 欧美一区视频在线| 日韩欧美亚洲国产一区| 色先锋资源久久综合5566| 亚洲精品av在线播放| 久久精品在线视频| 91国内精品久久| 欧美精品videofree1080p| 国产成人拍精品视频午夜网站| 国产精品极品美女在线观看免费| 久久精品色欧美aⅴ一区二区| 亚洲专区中文字幕| 成人春色激情网| 国产激情久久久| 日韩欧美在线视频观看| 亚洲精品国产精品久久清纯直播| 91爱视频在线| 欧美视频国产精品| 国产亚洲一区二区在线| 欧美激情二区三区| 日韩视频第一页| 日韩免费在线看| 97碰在线观看| 久久综合免费视频| 国产精品18久久久久久麻辣| 深夜成人在线观看| 亚洲第一网站男人都懂| 日本中文字幕久久看| 久久久精品2019中文字幕神马| 一区二区三区 在线观看视| 亚洲夜晚福利在线观看| 菠萝蜜影院一区二区免费| 欧美性在线观看| 国产精品日韩欧美综合| 久久久欧美一区二区| 久久国产精品偷| 一区二区欧美激情| 欧美夫妻性生活视频| 国产一区二区在线免费视频| 国产精品视频久久久| 日韩精品中文字幕有码专区| 国产综合香蕉五月婷在线| 国产一区欧美二区三区| 97视频国产在线| 久久精品国产91精品亚洲| 日韩成人激情视频| 最近2019中文字幕第三页视频| 久久久久久久国产精品| 欧美激情一二三| 久久资源免费视频| 久久久亚洲福利精品午夜| 欧美成人中文字幕| 欧美日韩亚洲精品内裤| 中文字幕久久久av一区| 亚洲黄页网在线观看| 亚洲黄在线观看| 欧美理论电影在线观看| 亚洲国产日韩精品在线| 国外成人在线视频| 亚洲天堂免费视频| 国产精品一区专区欧美日韩| 日韩精品一区二区三区第95| 久久99久久亚洲国产| 久久亚洲精品小早川怜子66| 国产999视频| 日韩视频欧美视频| 国产精品盗摄久久久| 国产婷婷色综合av蜜臀av| 97超级碰碰碰久久久| 日韩电影免费在线观看中文字幕| 91po在线观看91精品国产性色| 国产亚洲精品久久久| 亚洲一品av免费观看| 高清一区二区三区日本久| 精品久久久久久中文字幕大豆网| 91亚洲精品一区二区| 国产视频在线观看一区二区| 色综合久久88色综合天天看泰| 亚洲免费人成在线视频观看| 深夜福利国产精品| 国产亚洲精品久久久久久777| 亚洲第五色综合网| 国产做受高潮69| xvideos亚洲| 91在线视频一区| 亚州国产精品久久久| 欧美整片在线观看| 欧美精品精品精品精品免费| 欧美在线视频播放| 91欧美激情另类亚洲| 精品亚洲男同gayvideo网站| 欧美激情久久久久| 奇米4444一区二区三区| 日韩av三级在线观看| 国产亚洲成av人片在线观看桃| 成人免费看片视频| 岛国av午夜精品| 欧美夫妻性视频| 亚洲国产中文字幕久久网| 精品在线欧美视频| 国产97在线视频| 日韩网站在线观看| 精品久久久久久中文字幕大豆网| 色噜噜狠狠色综合网图区| 欧美多人爱爱视频网站| 在线观看国产精品淫| 亚洲国产美女精品久久久久∴| 欧美亚洲在线视频| 久久精品91久久香蕉加勒比| 久久国产精品久久久| 97视频在线观看免费高清完整版在线观看| 久久久成人精品视频| 91高清视频免费观看| 国产精品视频大全| 国产成人中文字幕| 91视频免费网站| 91精品国产免费久久久久久| 亚洲精品电影在线| 欧美日韩成人精品| 久久天天躁狠狠躁夜夜爽蜜月| 97视频在线观看视频免费视频| 奇米4444一区二区三区| 国产三级精品网站| 欧美日韩精品中文字幕| 97香蕉超级碰碰久久免费的优势| 亚洲欧洲av一区二区| 中国china体内裑精亚洲片| 国产成人一区三区| www.午夜精品| 国产免费一区二区三区香蕉精| 亚洲免费人成在线视频观看| 亚洲福利在线看| 一区二区三区久久精品| 亚洲成人激情小说| www.国产精品一二区| 欧美怡春院一区二区三区| 欧美日韩国产成人高清视频| 97超级碰在线看视频免费在线看| 午夜免费久久久久| 欧美电影在线观看| 国产一区二区色| 国产精品久久久久久中文字| 国产小视频国产精品| 久久99亚洲精品| 国产成人一区三区| 欧美日韩中文字幕在线| 亚洲精品动漫100p| 日韩成人激情视频| 成人免费视频97| 中文字幕日韩高清| 久久人人爽人人爽爽久久| 美女国内精品自产拍在线播放| 欧美性猛交xxxx富婆弯腰| 成人妇女免费播放久久久| y97精品国产97久久久久久|