iOS 側(cè)滑顯示菜單欄(基礎(chǔ))

最常見的向右滑動顯示菜單欄,其實就是兩個或多個圖層等級不一的視圖。向右滑動時,最上面的圖層根據(jù)滑動幅度來改變Frame(相對于父類復(fù)層)x值?,F(xiàn)在常見的例如QQ側(cè)滑顯示菜單欄:下面的圖層Frame.X值起初不是為0的,當(dāng)頂級圖層Frame.X的值為0時,監(jiān)測滑動幅度是否大于0(作者取值為80),通過滑動幅度改變上下圖層Frame.X的值。

廢話不多說了,上代碼吧:

//添加手勢

UIPanGestureRecognizer*panGesture = [[UIPanGestureRecognizer alloc] initWithTarget: self action: @selector(changeFrame:)];

[self.view addGestureRecognizer: panGesture];

#pragma側(cè)滑顯示菜單

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

//獲取滑動幅度

CGPointtranslation = [recognizertranslationInView:self.view];//在某個view上面滑動幅度

float x = translation.x;//紀錄滑動幅度

NSLog(@"%f",x);


[UIViewanimateWithDuration:0.5delay:0options:UIViewAnimationOptionCurveEaseOutanimations:^{

if(x >=0) {//實現(xiàn)跟手勢改變位置

_contentView.frame=CGRectMake(x,0,SCREEN_WIDTH,SCREEN_HEIGHT);

_personMenuView.view.frame=CGRectMake(-SCREEN_WIDTH/3*2+ (x *0.9),0,SCREEN_WIDTH,SCREEN_HEIGHT);

}

}completion:nil];

if(recognizer.state==UIGestureRecognizerStateEnded) {

//當(dāng)手勢完成時,看最終幅度是否大于你預(yù)設(shè)的值,大于設(shè)置動畫(展示菜單),小于時回到原處(隱藏菜單圖層)

[UIViewanimateWithDuration:0.5delay:0options:UIViewAnimationOptionCurveEaseOutanimations:^{

if(x >80) {

_contentView.frame=CGRectMake(SCREEN_WIDTH/5*4+10,0,SCREEN_WIDTH,SCREEN_HEIGHT);

_personMenuView.view.frame=CGRectMake(0,0,SCREEN_WIDTH,SCREEN_HEIGHT);

}else{

_contentView.frame=CGRectMake(0,0,SCREEN_WIDTH,SCREEN_HEIGHT);

_personMenuView.view.frame=CGRectMake(-SCREEN_WIDTH/3*2,0,SCREEN_WIDTH,SCREEN_HEIGHT);

}

}completion:nil];

}

}

}


我寫的雖然很簡單,但是句句屬實,比起網(wǎng)絡(luò)上面的繁瑣好多了

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

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

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