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

首頁 > 系統 > iOS > 正文

iOS實現簡單抽屜效果

2020-07-26 01:29:27
字體:
來源:轉載
供稿:網友

抽屜效果

所謂抽屜效果就是三個視圖,向右拖拽顯示左邊的視圖,向左拖拽顯示右邊的視圖,當拖拽大于屏幕的一半時最上面的視圖會自動定位到一邊,當點擊左邊或右邊視圖時會最上面視圖會自動復位。

效果如圖:三個視圖(左邊:淺灰色視圖、右邊:品紅視圖、主視圖:黑色視圖)

封裝代碼

DrawerViewController

#import <UIKit/UIKit.h>@interface DrawerViewController : UIViewController@property (weak, nonatomic, readonly) UIView *leftView;@property (weak, nonatomic, readonly) UIView *rightView;@property (weak, nonatomic, readonly) UIView *mainView;@end// -------------------------------------------------------#import "DrawerViewController.h"#define ScreenWidth [UIScreen mainScreen].bounds.size.width#define ScreenHeight [UIScreen mainScreen].bounds.size.height#define MaxOffsetY 100#define MaxOffsetX ([UIScreen mainScreen].bounds.size.width - 100)@implementation DrawerViewController- (void)viewDidLoad { [super viewDidLoad]; // 1. 初始化視圖 [self setup]; // 2. 給mainView添加拖動手勢 UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGesture:)]; [self.mainView addGestureRecognizer:panGestureRecognizer]; // 3. 給self.view添加一個單擊手勢 UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGesture:)]; [self.view addGestureRecognizer:tap];}- (void)tapGesture:(UITapGestureRecognizer *)tap { // mainView復位 [UIView animateWithDuration:0.2 animations:^{  self.mainView.frame = self.view.bounds; }];}- (void)panGesture:(UIPanGestureRecognizer *)pan { CGPoint offsetPoint = [pan translationInView:self.view]; self.mainView.frame = [self frameWithOffset:offsetPoint.x]; if (self.mainView.frame.origin.x > 0) {  // → 右移(顯示leftView)  self.rightView.hidden = YES; } else if (self.mainView.frame.origin.x < 0) {  // ← 左移(顯示rightView)  self.rightView.hidden = NO; } // 如果拖拽結束,自動定位 CGFloat targetOffsetX = 0; if (pan.state == UIGestureRecognizerStateEnded) {  if (self.mainView.frame.origin.x >= ScreenWidth * 0.5) { // 右側   targetOffsetX = MaxOffsetX;  } else if (CGRectGetMaxX(self.mainView.frame) < ScreenWidth * 0.5){ // 左側   targetOffsetX = -MaxOffsetX;  }  // 計算出當前位置距離目標位置所需要的偏移距離  CGFloat offsetX = targetOffsetX - self.mainView.frame.origin.x;  // 滑動不到屏幕一般時仍然顯示mainView(self.view.bounds) 否則自動定位到左側或右側  CGRect mainFrame = targetOffsetX == 0 ? self.view.bounds : [self frameWithOffset:offsetX];  [UIView animateWithDuration:0.2 animations:^{   self.mainView.frame = mainFrame;  }]; } [pan setTranslation:CGPointZero inView:self.view];}- (CGRect)frameWithOffset:(CGFloat)offsetX { CGRect newFrame = self.mainView.frame; newFrame.origin.x += offsetX;  // x CGFloat offsetY = self.mainView.frame.origin.x * MaxOffsetY / ScreenWidth; newFrame.origin.y = fabs(offsetY); // y CGFloat offsetHeight = ScreenHeight - (newFrame.origin.y * 2); newFrame.size.height = offsetHeight; // height return newFrame;}- (void)setup { UIView *leftView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds]; //leftView.backgroundColor = [UIColor lightGrayColor]; _leftView = leftView; [self.view addSubview:leftView]; UIView *rightView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds]; //rightView.backgroundColor = [UIColor magentaColor]; _rightView = rightView; [self.view addSubview:rightView]; UIView *mainView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds]; //mainView.backgroundColor = [UIColor blackColor]; _mainView = mainView; [self.view addSubview:mainView];}@end

使用封裝

1.將DrawerViewController類拖入到工程中,并繼承該類
2.分別創建LeftViewController、RightViewController、MainViewController
3.將每個視圖對應的view添加到對應的視圖上,并成為當前控制器的子控制器

第一步:繼承DrawerViewController

#import <UIKit/UIKit.h>#import "DrawerViewController.h"@interface ViewController : DrawerViewController@end

第二步:分別創建LeftViewController、RightViewController、MainViewController
第三步:為leftView、rightView、mainView 添加子視圖,并將每天控制器作為當前控制器的子控制器

#import "ViewController.h"#import "LeftViewController.h"#import "RightViewController.h"#import "MainViewController.h"@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // Main MainViewController *mainViewController = [[MainViewController alloc] init]; mainViewController.view.frame = self.view.bounds; mainViewController.view.backgroundColor = [UIColor brownColor]; [self.mainView addSubview:mainViewController.view]; [self addChildViewController:mainViewController]; // Left LeftViewController *leftViewController = [[LeftViewController alloc] init]; leftViewController.view.frame = self.view.bounds; leftViewController.view.backgroundColor = [UIColor purpleColor]; [self.leftView addSubview:leftViewController.view]; [self addChildViewController:leftViewController]; // Right RightViewController *rightViewController = [[RightViewController alloc] init]; rightViewController.view.frame = self.view.bounds; rightViewController.view.backgroundColor = [UIColor cyanColor]; [self.rightView addSubview:rightViewController.view]; [self addChildViewController:rightViewController];}@end

實現效果:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
伊人伊成久久人综合网站| 亚洲一区国产精品| 国产精品扒开腿做爽爽爽男男| 欧美一区二区三区精品电影| 日韩在线视频国产| 久久精品久久久久久| 精品久久久久久久久久久久| 色狠狠久久aa北条麻妃| 亚洲国产日韩欧美综合久久| 91久久精品视频| 国产成人免费91av在线| 日韩av中文字幕在线免费观看| 亚洲人成电影网站色| 国产成人精品在线视频| 97精品国产97久久久久久春色| 国产精品电影一区| 亚洲国产精品中文| 国产精品久久97| 国产国语刺激对白av不卡| 精品久久香蕉国产线看观看gif| 国产成人拍精品视频午夜网站| 在线播放日韩精品| 久热精品视频在线免费观看| 日韩免费观看网站| 亚洲精品成人久久久| 亚洲高清福利视频| 国内精品久久久久| 国产精品偷伦视频免费观看国产| www.久久色.com| 国模视频一区二区| 最近2019好看的中文字幕免费| 亚洲国产97在线精品一区| 欧美精品一二区| 欧美日韩亚洲成人| 精品无人区太爽高潮在线播放| 久久亚洲综合国产精品99麻豆精品福利| 亚洲午夜久久久久久久| 欧美日韩国产一区二区| 国产精品美女无圣光视频| 成人国产在线视频| 中文字幕亚洲综合| 国产欧美亚洲视频| 亚洲xxxxx| 久久久影视精品| 亚洲人成电影网站色xx| 国产99久久精品一区二区永久免费| 欧美成人性色生活仑片| 国产精品免费看久久久香蕉| 最近2019年中文视频免费在线观看| 欧美成人精品一区二区| 91精品视频一区| 亚洲人成网站色ww在线| 欧美最近摘花xxxx摘花| 午夜精品一区二区三区在线播放| 日韩欧美在线观看视频| 欧美性精品220| 欧美乱大交xxxxx另类电影| 欧美黄色片免费观看| 一区二区三区在线播放欧美| 亚洲欧洲日本专区| 国产一区二区三区免费视频| 久久免费国产精品1| 欧美在线影院在线视频| 久久精品国产成人精品| 中文字幕日韩有码| 国产亚洲精品综合一区91| 久热精品视频在线观看| 欧美视频一二三| 超在线视频97| 亚洲午夜女主播在线直播| 欧美亚洲第一区| 亚洲精品日韩欧美| 久久精品成人一区二区三区| 欧美日韩成人黄色| 成人性生交大片免费看视频直播| 狠狠躁夜夜躁久久躁别揉| 66m—66摸成人免费视频| 欧美高清一级大片| 国产狼人综合免费视频| 日韩黄色av网站| 26uuu国产精品视频| 亚洲伊人一本大道中文字幕| 97在线视频免费观看| 91精品成人久久| 亚洲日韩欧美视频一区| 欧美电影在线观看| 日韩精品极品视频| 国产一区二区香蕉| 欧美天堂在线观看| 久久免费视频观看| 在线观看国产精品日韩av| 国产精品r级在线| 欧美性视频精品| 91精品综合视频| 一本一本久久a久久精品综合小说| 自拍偷拍免费精品| 欧美日韩成人网| 92国产精品视频| 激情懂色av一区av二区av| 日韩av在线免费播放| 国产aⅴ夜夜欢一区二区三区| 精品成人69xx.xyz| 欧美成人激情视频| 欧美中文在线字幕| 51ⅴ精品国产91久久久久久| 亚洲xxxxx| 欧美精品一区三区| 成人精品视频久久久久| 亚洲精选一区二区| 亚洲奶大毛多的老太婆| 久久精视频免费在线久久完整在线看| 日韩中文在线中文网在线观看| 九九热最新视频//这里只有精品| 欧美最猛性xxxxx(亚洲精品)| 亚洲free嫩bbb| 国产精品日韩久久久久| 一区二区三区四区在线观看视频| 日韩最新在线视频| 精品国产一区二区三区久久久狼| 国产欧美日韩视频| 欧美午夜www高清视频| 日韩视频免费在线观看| 欧美在线免费看| 日韩av一区在线观看| 久久伊人91精品综合网站| 久久久久亚洲精品国产| 在线成人一区二区| 色噜噜狠狠狠综合曰曰曰88av| 日韩精品欧美国产精品忘忧草| 亚洲欧洲自拍偷拍| 国产精品爽爽ⅴa在线观看| 欧美大片大片在线播放| 欧美激情综合亚洲一二区| 国产欧美日韩亚洲精品| 亚洲色图25p| 日韩成人av在线播放| 国产91色在线|| 日本三级韩国三级久久| www.亚洲天堂| 国产丝袜一区二区| 欧美成人黑人xx视频免费观看| 欧美亚洲视频在线观看| 欧美激情精品在线| 成人女保姆的销魂服务| 日本成人在线视频网址| 国产99久久精品一区二区 夜夜躁日日躁| 精品欧美激情精品一区| 国产精品高清在线观看| 最新国产成人av网站网址麻豆| 亚洲aⅴ日韩av电影在线观看| 亚洲a级在线观看| 亚洲欧美精品suv| 欧美日本在线视频中文字字幕| www.日韩视频| 97成人超碰免| 欧洲成人在线视频| 国产成人精品久久亚洲高清不卡| 亚洲国产精品人久久电影| 欧美日韩在线观看视频小说| 91视频免费在线| 亚洲三级 欧美三级| 亚洲无限乱码一二三四麻| 亚洲高清色综合| 午夜精品久久久久久久男人的天堂|