側(cè)滑欄的實(shí)現(xiàn)

效果圖


現(xiàn)在這些框架很多第三方資源,但是想自己寫一個(gè)。側(cè)滑實(shí)現(xiàn)比較簡(jiǎn)單,根據(jù)自己需求去擴(kuò)展界面。

創(chuàng)建一個(gè)類MenuViewController作為Navigation的rootVC

新建一個(gè)UIView(MenuView)作為左側(cè)漏出來的一部分,新建一個(gè)ContentViewController作為右側(cè)可拖動(dòng)的部分。將兩個(gè)分別添加到MenuViewController上給ContentViewController的view加上拖拽的手勢(shì)。

實(shí)現(xiàn)手勢(shì)的事件方法,側(cè)滑效果就完成了。

- (void)panGesture:(UIPanGestureRecognizer *)recognizer {

CGPoint point = [recognizer translationInView:self.contenViewController.view];

recognizer.view.center = CGPointMake(recognizer.view.center.x + point.x, recognizer.view.center.y);

CGFloat viewX = recognizer.view.frame.origin.x;

CGFloat viewY = recognizer.view.frame.origin.y;

if (viewX < 0) {

recognizer.view.frame = CGRectMake(0, viewY, recognizer.view.frame.size.width, recognizer.view.frame.size.height);

} else if (viewX >= self.view.frame.size.width * 0.8) {

recognizer.view.frame = CGRectMake(self.view.frame.size.width * 0.8, viewY, recognizer.view.frame.size.width, recognizer.view.frame.size.height);

} else {

recognizer.view.frame = CGRectMake(viewX + point.x, viewY, recognizer.view.frame.size.width, recognizer.view.frame.size.height);

}

if (recognizer.state == UIGestureRecognizerStateEnded) {

if (viewX < 120) {

[UIView animateWithDuration:0.5 animations:^{

recognizer.view.frame = CGRectMake(0, viewY, recognizer.view.frame.size.width, recognizer.view.frame.size.height);

}];

}

if (viewX > 120) {

[UIView animateWithDuration:0.5 animations:^{

recognizer.view.frame = CGRectMake(self.view.frame.size.width * 0.8, viewY, recognizer.view.frame.size.width, recognizer.view.frame.size.height);

}];

}

}

[recognizer setTranslation:CGPointZero inView:self.contenViewController.view];

}



demo下載

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ViewsBecause view objects are the main way your applicati...
    梁光飛閱讀 753評(píng)論 0 0
  • 1、設(shè)置UILabel行間距 NSMutableAttributedString* attrString = [[...
    十年一品溫如言1008閱讀 2,027評(píng)論 0 3
  • 23歲: 你好! 北京時(shí)間的你到來的時(shí)候,我正跑在一條河邊,突然手機(jī)里充滿了溫暖的問候。感動(dòng)之余我也發(fā)現(xiàn):你真的來...
    圣狗子閱讀 297評(píng)論 0 2
  • 自從開始追相聲后,就覺得自己是個(gè)文盲,努力想讓自己達(dá)到“腹有詩書氣自華”狀態(tài),奈何腹內(nèi)存貨太少,所以說人丑就要多讀...
    愛吃喵的松鼠桂魚喵閱讀 596評(píng)論 3 7
  • 8.頭發(fā)(上) 隨著學(xué)習(xí)壓力或是工作壓力的增加,很多人都會(huì)有掉頭發(fā)的情況出現(xiàn),尤其是早上起床的時(shí)候,看到枕邊散落著...
    秋楓葉舞閱讀 461評(píng)論 0 7

友情鏈接更多精彩內(nèi)容