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

首頁 > 系統 > iOS > 正文

iOS仿簡書、淘寶等App的View彈出效果

2020-07-26 03:14:04
字體:
來源:轉載
供稿:網友

用簡書App的時候覺得這個View的彈出效果特別好,而且非常平滑,所以我就嘗試寫了一個,和簡書App上的效果基本一致了:

下面開始講解:

1.首先我們要知道這個頁面有幾個View?這個頁面其實有四個View,self.view , 圖中白色VC的View rootVC.view ,白色VC上的maskView maskView , 以及彈出的popView popView 。我們創建它們:

 self.view.backgroundColor = [UIColor blackColor];  _popView = ({ UIView * popView = [[UIView alloc]initWithFrame:CGRectMake(0, [UIScreen mainScreen].bounds.size.height, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height /2.0)];  popView.backgroundColor = [UIColor grayColor];  //加個陰影 popView.layer.shadowColor = [UIColor blackColor].CGColor; popView.layer.shadowOffset = CGSizeMake(0.5, 0.5); popView.layer.shadowOpacity = 0.8; popView.layer.shadowRadius = 5;  //關閉btn UIButton * closeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; closeBtn.frame = CGRectMake(15, 0, 50, 40); [closeBtn setTitle:@"關閉" forState:UIControlStateNormal]; [closeBtn setTitleColor:[UIColor colorWithRed:217/255.0 green:110/255.0 blue:90/255.0 alpha:1] forState:UIControlStateNormal]; [closeBtn addTarget:self action:@selector(close) forControlEvents:UIControlEventTouchUpInside]; [popView addSubview:closeBtn]; popView;});   //添加VC的View的方法 _rootVC.view.frame = self.view.bounds; _rootVC.view.backgroundColor = [UIColor whiteColor]; _rootview = _rootVC.view; [self addChildViewController:_rootVC]; [self.view addSubview:_rootview];  //rootVC上的maskView _maskView = ({ UIView * maskView = [[UIView alloc]initWithFrame:self.view.bounds]; maskView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5]; maskView.alpha = 0; maskView; }); [_rootview addSubview:_maskView];

2.然后要添加點擊事件,這里為了方便我的彈出事件直接用的touchesBegan

- (void)show{ [[UIApplication sharedApplication].windows[0] addSubview:_popView];  CGRect frame = _popView.frame; frame.origin.y = self.view.frame.size.height/2.0;  [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{  [_rootview.layer setTransform:[self firstTransform]];  } completion:^(BOOL finished) {  [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{   [_rootview.layer setTransform:[self secondTransform]];  //顯示maskView  [_maskView setAlpha:0.5f];  //popView上升  _popView.frame = frame;  } completion:^(BOOL finished) {  }];  }]; }

這里要注意一下的就是popview是添加到window上面的:[[UIApplication sharedApplication].windows[0] addSubview:_popView];

然后關鍵的layer形變方法來了

- (CATransform3D)firstTransform{ CATransform3D t1 = CATransform3DIdentity; t1.m34 = 1.0/-900; //帶點縮小的效果 t1 = CATransform3DScale(t1, 0.95, 0.95, 1); //繞x軸旋轉 t1 = CATransform3DRotate(t1, 15.0 * M_PI/180.0, 1, 0, 0); return t1;}- (CATransform3D)secondTransform{ CATransform3D t2 = CATransform3DIdentity; t2.m34 = [self firstTransform].m34; //向上移 t2 = CATransform3DTranslate(t2, 0, self.view.frame.size.height * (-0.08), 0); //第二次縮小 t2 = CATransform3DScale(t2, 0.8, 0.8, 1); return t2;}

大家可以看到這,應該可以發現這里其實有兩次形變

3.隱藏動畫

- (void)close{ _isShow = NO;  CGRect frame = _popView.frame; frame.origin.y += self.view.frame.size.height/2.0;  [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{  //maskView隱藏 [_maskView setAlpha:0.f]; //popView下降 _popView.frame = frame; //同時進行 感覺更絲滑 [_rootview.layer setTransform:[self firstTransform]];  } completion:^(BOOL finished) {  [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{  //變為初始值  [_rootview.layer setTransform:CATransform3DIdentity];  } completion:^(BOOL finished) {   //移除  [_popView removeFromSuperview]; }];  }];  }

最后,完整代碼,已經封裝好了,繼承之后使用創建方法就行了

GitHub:Wzxhaha

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲成在人线av| 动漫精品一区二区| 一区二区三区视频观看| 国内精品国产三级国产在线专| 中文字幕在线看视频国产欧美| 亚洲免费电影在线观看| 亚洲偷欧美偷国内偷| 亚洲va欧美va国产综合久久| 久久人人看视频| 91夜夜揉人人捏人人添红杏| 国产日韩精品在线播放| 久久久久久久久久久网站| 日韩高清免费观看| 成人在线小视频| 日韩美女毛茸茸| 九九热这里只有精品6| 亚洲字幕一区二区| 国模视频一区二区三区| 中文字幕精品久久久久| 日本欧美一级片| 97视频色精品| 成人在线免费观看视视频| 国产精品一香蕉国产线看观看| 亚洲精品久久久久中文字幕二区| 欧美韩国理论所午夜片917电影| 精品国产一区二区三区久久久狼| 欧美在线日韩在线| 精品国产一区二区三区久久狼黑人| 欧洲成人午夜免费大片| 日韩在线视频免费观看高清中文| 欧洲精品在线视频| 操人视频在线观看欧美| 国产精品免费观看在线| 国产精品美女www爽爽爽视频| 欧美日韩不卡合集视频| 亚洲黄一区二区| 国产视频欧美视频| 91免费在线视频网站| 欧美一级大片在线免费观看| 亚洲男人第一网站| 亚洲男人的天堂网站| 北条麻妃99精品青青久久| 国产黑人绿帽在线第一区| 97婷婷大伊香蕉精品视频| 国产一区玩具在线观看| 亚洲大胆人体在线| 91亚洲va在线va天堂va国| 久久亚洲电影天堂| 国产亚洲精品va在线观看| 国产成人精品一区二区在线| 成人日韩av在线| 亚洲理论在线a中文字幕| 欧美专区在线播放| 久久久成人的性感天堂| 91精品国产91久久久久久吃药| 色777狠狠综合秋免鲁丝| 国产一区二区三区视频| 精品色蜜蜜精品视频在线观看| 亚洲网站在线看| 精品福利免费观看| 国产不卡一区二区在线播放| 欧美日韩成人在线视频| 日本一欧美一欧美一亚洲视频| 国产精品99久久99久久久二8| 国产精品小说在线| 久久在线免费观看视频| 黄色成人在线播放| 欧美人成在线视频| 91极品视频在线| 国产亚洲精品久久久优势| 国产在线999| 中文字幕亚洲一区二区三区五十路| 岛国av一区二区在线在线观看| 日韩欧美一区视频| 国产精品影院在线观看| 国内精品久久久久久中文字幕| 亚洲精品一区久久久久久| 亚洲精品短视频| 亚洲欧美激情另类校园| 91精品国产高清久久久久久久久| 色婷婷综合久久久久中文字幕1| 欧美成人精品xxx| 日本精品性网站在线观看| 91久久精品国产91久久性色| 国产精品普通话| 国产精品色视频| 疯狂蹂躏欧美一区二区精品| 欧美亚洲日本网站| 国产一区二区三区视频在线观看| 中文字幕久热精品视频在线| 亚洲国产欧美一区二区三区同亚洲| 久久精品成人动漫| 亚洲护士老师的毛茸茸最新章节| 91国产美女视频| 国产69精品久久久久9999| 亚洲国产精品久久久久| 国产日本欧美一区| 黑人与娇小精品av专区| 亚洲精品久久久久久久久久久久久| 欧洲成人免费aa| 欧美黑人一区二区三区| 91精品久久久久久久久| 亚洲天天在线日亚洲洲精| 性欧美在线看片a免费观看| 亚洲美女精品久久| 日韩精品视频免费在线观看| 伊人一区二区三区久久精品| 在线激情影院一区| 97视频在线看| 国产一区二区美女视频| 欧美高清无遮挡| 在线观看国产精品91| 欧美黑人狂野猛交老妇| 91久久中文字幕| 久久久久久久久久久久久久久久久久av| 2023亚洲男人天堂| 91高清免费在线观看| 日韩欧美成人网| 久久精品99久久久香蕉| 亚洲日本aⅴ片在线观看香蕉| 午夜精品久久久久久久99热| 久久精品99久久久香蕉| 国产噜噜噜噜噜久久久久久久久| 91av在线免费观看| 日韩精品高清在线| 久久福利网址导航| 操91在线视频| 国产精品视频久久久久| 日韩欧美高清在线视频| 国产午夜精品全部视频在线播放| 97在线精品国自产拍中文| 97在线观看视频| 91视频国产高清| 欧美亚洲日本黄色| 欧美午夜精品久久久久久浪潮| 国产精品高潮呻吟久久av黑人| 国产精品久久久久久亚洲影视| 久久五月天色综合| 精品国产拍在线观看| 欧洲精品毛片网站| 在线精品国产欧美| 中文字幕欧美亚洲| 九色精品美女在线| 97超级碰碰碰久久久| 原创国产精品91| 久久亚洲成人精品| 日本欧美精品在线| 欧美精品18videosex性欧美| 欧美日韩国产色视频| 国产精品成人一区二区| 色一情一乱一区二区| 欧美中文在线视频| 欧美成人精品xxx| 成人免费网站在线观看| 91成人性视频| 91精品视频免费观看| www.亚洲一区| 欧美激情免费在线| 欧美一级片在线播放| 日韩在线视频导航| 中文字幕日韩免费视频| 国产在线观看精品一区二区三区| 亚洲男人天堂网| 久久成年人视频|