iOS仿奇魚旅行/淘寶/京東水平拖動(dòng)查看詳情效果

先看效果圖


demo.gif

思路:
1.在cell里面嵌套UICollectionView
2.監(jiān)聽scrollView的水平滾動(dòng)x值
3.水平滾動(dòng)實(shí)時(shí)繪制貝塞爾曲線

枚舉,后面用到

typedef NS_ENUM(NSInteger, LMRefreshState) {
    LMRefreshStateNormal = 0,    //查看更多
    LMRefreshStatePulling = 1,   // 釋放查看
};

1.核心代碼

//創(chuàng)建貝塞爾曲線
-(CGPathRef)createBezierPath:(CGFloat)amount{
    UIBezierPath *verticalLine = [UIBezierPath bezierPath];

    if (amount != 0) {
        CGPoint topPoint1 = CGPointMake(self.myCollectionView.contentOffset.x+SCREENWIDTH-amount,15*scaleRates);
        CGPoint topPoint2 = CGPointMake(self.myCollectionView.contentOffset.x+SCREENWIDTH, 15*scaleRates);
        CGPoint bottomPoint3 = CGPointMake(self.myCollectionView.contentOffset.x+SCREENWIDTH, 200*scaleRates);
        CGPoint midControlPoint = CGPointMake(self.myCollectionView.contentOffset.x+SCREENWIDTH-amount*2, 200*scaleRates/2);
        // NSLog(@"%@",NSStringFromCGPoint(midControlPoint));
        CGPoint bottomPoint = CGPointMake(self.myCollectionView.contentOffset.x+SCREENWIDTH-amount, 200*scaleRates);
        
        [verticalLine moveToPoint:topPoint1];
        [verticalLine addLineToPoint:topPoint2];
        [verticalLine addLineToPoint:bottomPoint3];
        [verticalLine addLineToPoint:bottomPoint];
        [verticalLine closePath];
        [verticalLine addQuadCurveToPoint:bottomPoint controlPoint:midControlPoint];
        NSString *loadMoreString = @"查\n看\n更\n多";
        CGSize size = [Helper sizeWithText:loadMoreString font:self.loadMoreLabel.font maxW:10];
        //  NSLog(@"%f",amount);
        self.loadMoreLabel.frame = CGRectMake(self.myCollectionView.contentOffset.x+SCREENWIDTH-amount/2,200*scaleRates/2 - (size.height+35)/2, size.width, 200*scaleRates);
        self.refreshState = LMRefreshStateNormal;
        if(amount>30){
            self.refreshState = LMRefreshStatePulling;
            loadMoreString = @"釋\n放\n查\n看";
        }
        self.loadMoreLabel.text = loadMoreString;
    }

    return [verticalLine CGPath];
}

2.監(jiān)聽scrollView水平滾動(dòng)

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
    self.contenOffsetX = scrollView.contentOffset.x;
  //  DLog(@"%f",scrollView.contentOffset.x);
    self.refreshState = LMRefreshStateNormal;
    if (_topicModel.goods_info.count <=2) {
        return;
    }
    
    if(scrollView.contentOffset.x+SCREENWIDTH > _myCollectionView.contentSize.width){
        NSLog(@"zouzouzou");
        if (self.shapeLayer == nil) {
            self.shapeLayer = [CAShapeLayer layer];
            [self.myCollectionView.layer addSublayer:self.shapeLayer];
            self.shapeLayer.fillColor = ViewBackGroudColor.CGColor;
            self.shapeLayer.strokeColor = ViewBackGroudColor.CGColor;
            
            self.loadMoreLabel = [UILabel label];
            self.loadMoreLabel.numberOfLines = 0;
            self.loadMoreLabel.font = [UIFont systemFontOfSize:10];
            [self.myCollectionView addSubview:self.loadMoreLabel];
        }
        self.shapeLayer.path = [self createBezierPath:((scrollView.contentOffset.x+SCREENWIDTH) -_myCollectionView.contentSize.width)*scaleWidthRates];
    }else {
        self.shapeLayer.strokeColor = [UIColor clearColor].CGColor;
        [self.shapeLayer removeFromSuperlayer];
        self.shapeLayer = nil;
        self.loadMoreLabel.text = nil;
        [self.loadMoreLabel removeFromSuperview];
    }
}

3.監(jiān)聽scrollView開始減速

-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
    if(self.refreshState == LMRefreshStatePulling){ // 跳轉(zhuǎn)對(duì)應(yīng)的控制器
        if (self.delegate && [self.delegate respondsToSelector:@selector(jumpToThemeVCPassByTadId:)]) {
            [self.delegate jumpToThemeVCPassByTadId:_topicModel.ta_id];
        }
    }
}

歡迎大家使用奇魚旅行app,使用過程中出現(xiàn)什么問題,歡迎大家提出寶貴的意見!

奇魚旅行官方微博:奇魚旅行
奇魚旅行官網(wǎng):www.qy-trip.com

奇魚旅行是一個(gè)以精品旅宿預(yù)訂為核心的旅行app,更走心的個(gè)性化住宿,還比酒店便宜50%;2017新用戶注冊(cè)即可獲得500元住宿券。
奇魚旅行目前擁有近10000套房源,提供民宿、客棧、度假別墅、精品酒店、房車、游艇、露營帳篷…等非標(biāo)準(zhǔn)、個(gè)性化住宿預(yù)訂服務(wù),以覆蓋“三五好友徹夜Party、閨蜜小聚、家庭出游、工作出差、情侶度假、深度旅行…”等各類出行住宿需求為目標(biāo)。
年輕不指年齡,更是一種生活態(tài)度與方式。奇魚旅行服務(wù)于每一位有態(tài)度、追求深度旅行的“年輕人”,連接房東和用戶,共享“有趣好玩”的旅行體驗(yàn)。

最后編輯于
?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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