iOS抽屜式結(jié)構(gòu)介紹
手機上裝著QQ的朋友,肯定用過QQ左滑設置菜單。本文介紹的抽屜式結(jié)構(gòu)就是和QQ類似的左滑顯示菜單的結(jié)構(gòu)。
iOS抽屜式結(jié)構(gòu)實現(xiàn)分析
實現(xiàn)抽屜式結(jié)構(gòu)其實不難,找準關(guān)鍵點就行。首先抽屜式結(jié)構(gòu)是菜單頁不動,主頁向右滑動來展示菜單頁。我們可以自定義一個controller,設置兩個屬性,一個mainVC,一個menuVC,將mainVC和menuVC的view添加到controller的view上(menuVC的view在下面)。然后實現(xiàn)兩個方法openLeftMenu和closeLeftMenu(這兩個方法主要是計算mainVC的view的位置),基本就完成了。然后給mainVC的view添加tap和pan手勢,實現(xiàn)mainVC的view跟隨手指移動即可。
主要代碼
下面是主要實現(xiàn)代碼:
// 使mainVC的view跟隨手指移動,并比較結(jié)束時mainVC的view的左側(cè)是在屏幕中心線的
// 左邊還是右邊從而判斷結(jié)束時是打開還是要關(guān)閉菜單頁
- (void)handlePanGesture:(UIPanGestureRecognizer *)pan {
// move pan.view with finger
CGPoint offsetPoint = [pan translationInView:pan.view];
pan.view.center = CGPointMake(pan.view.center.x + offsetPoint.x, pan.view.center.y);
[pan setTranslation:CGPointZero inView:self.view];
// fix pan.view center when slide end
if (pan.state == UIGestureRecognizerStateEnded) {
CGFloat mainVCLeft = pan.view.frame.origin.x;
if (mainVCLeft < kScreenWidth / 2.f) {
[self closeLeftMenu];
} else {
[self openLeftMenu];
}
}
}
我做了demo放到了GitHub上,喜歡的同學可以去下載參考使用。
GitHub