類qq側(cè)滑效果實(shí)現(xiàn)

ViewController.m

在self.view上創(chuàng)建一個透明的View

  UIView *mainView=[[UIView alloc]initWithFrame:CGRectMake(-self.view.bounds.size.width*0.25,0,self.view.bounds.size.width,self.view.bounds.size.height)];
    
    mainView.backgroundColor = [UIColor lightGrayColor];
    
    [self.view addSubview:mainView];

添加tabbarController的view

- (void)addTabbarController
{
    _barVC = [[TabbarController alloc]init];

    [self addChildViewController:_barVC];
    
    [self.view addSubview:_barVC.view];
    
    _barVC.view.frame = self.view.bounds;
}

添加手勢

-(void)addRecognizer{
    //    添加拖拽
    UIPanGestureRecognizer *pan=[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(didPanEvent:)];
    
    [self.view addGestureRecognizer:pan];
}

實(shí)現(xiàn)拖拽


-(void)didPanEvent:(UIPanGestureRecognizer *)recognizer{
    
    // 1. 獲取手指拖拽的時候, 平移的值
    CGPoint translation = [recognizer translationInView:_barVC.view];
    
    // 2. 讓當(dāng)前控件做響應(yīng)的平移
    _barVC.view.transform = CGAffineTransformTranslate(_barVC.view.transform, translation.x, 0);
    
    [self.view.subviews objectAtIndex:1].ttx=[self.view.subviews objectAtIndex:2].ttx/3;
    
    // 3. 每次平移手勢識別完畢后, 讓平移的值不要累加
    [recognizer setTranslation:CGPointZero inView:_barVC.view];
    
    //獲取最右邊范圍
    CGAffineTransform  rightScopeTransform=CGAffineTransformTranslate(self.view.transform,[UIScreen mainScreen].bounds.size.width*0.75, 0);
    
    //    當(dāng)移動到右邊極限時
    if (_barVC.view.transform.tx>rightScopeTransform.tx) {
        
        //        限制最右邊的范圍
        _barVC.view.transform=rightScopeTransform;
        //        限制透明view最右邊的范圍
        [self.view.subviews objectAtIndex:1].ttx=[self.view.subviews objectAtIndex:2].ttx/3;
        
        //        當(dāng)移動到左邊極限時
    }else if (_barVC.view.transform.tx<0.0){
        
        //        限制最左邊的范圍
        _barVC.view.transform=CGAffineTransformTranslate(self.view.transform,0, 0);
        //    限制透明view最左邊的范圍
        [self.view.subviews objectAtIndex:1].ttx=[self.view.subviews objectAtIndex:2].ttx/3;
        
    }
    //    當(dāng)托拽手勢結(jié)束時執(zhí)行
    if (recognizer.state == UIGestureRecognizerStateEnded)
    {
        [UIView animateWithDuration:0.2 animations:^{
            
            if (_barVC.view.x >[UIScreen mainScreen].bounds.size.width*0.5) {
                
                _barVC.view.transform=rightScopeTransform;
                
                [self.view.subviews objectAtIndex:1].ttx=_barVC.view.ttx/3;
                
            }else{
                
                _barVC.view.transform = CGAffineTransformIdentity;
                
                [self.view.subviews objectAtIndex:1].ttx=_barVC.view.ttx/3;
            }
        }];
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,221評論 4 61
  • *7月8日上午 N:Block :跟一個函數(shù)塊差不多,會對里面所有的內(nèi)容的引用計數(shù)+1,想要解決就用__block...
    炙冰閱讀 2,727評論 1 14
  • 文 | 墨書 圖 |來源于網(wǎng)絡(luò) 你不能因?yàn)樘摕o縹緲的未來,而不顧自己真正想要的。 一年歲末。 這是2016年的最后...
    墨書7987閱讀 274評論 0 0
  • “人的心里的空間有限,能裝下的人數(shù)為定值,所以有著源源不斷的人進(jìn)入你的生命,占據(jù)你的心,也會有數(shù)不清的人佇足片刻離...
    旅行后的再見閱讀 783評論 0 6
  • 趕到早點(diǎn)攤時,最后一杯豆?jié){被買走了,老板娘推薦了一杯溫?zé)岬拿拙菩珗A,很應(yīng)景,今年元宵節(jié)的開端。 去年此時,急赴東...
    張永勝_永往直前閱讀 230評論 0 0

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