iOS仿照QQ實現(xiàn)左滑菜單(抽屜式結(jié)構(gòu))

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

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

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

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