免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

UICollectionView的無限滾動---妥協做法-創新互聯

項目中總有寫比較變態的需求,我們的UI設計師有喜歡很酷的交互,其中有個需求類似這種的

創新互聯公司服務項目包括越城網站建設、越城網站制作、越城網頁制作以及越城網絡營銷策劃等。多年來,我們專注于互聯網行業,利用自身積累的技術優勢、行業經驗、深度合作伙伴關系等,向廣大中小型企業、政府機構等提供互聯網行業的解決方案,越城網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到越城省份的部分城市,未來相信會繼續擴大服務區域并繼續獲得客戶的支持與信任!

        UICollectionView的無限滾動---妥協做法

    右側部分是可以滾動的當然是無限滾動,這中效果只有UICollectionView的自定義布局才能實現,重寫Layout的幾個方法主要的代碼就是給UICollectionViewLayoutAttributes的屬性賦值,主要是為這幾個center,size, transform3D;屬性賦值,主要使用的是AWCollectionViewDialLayout這個三方的布局。

    但是,這個三方并沒有實現無限滾動的。無限滾動也可以在scrollViewDidScroll:方法中進行檢測,開頭和結尾地方多添加幾個元素,如果到最后一個了重新回到第一個,但是這種實現有很強的卡頓感,所以后來放棄了這個。后來,在github找到了一種辦法,自定義拖拽手勢UIPanGestureRecognizer

,然后再拖拽手勢的target,action方法中進行判斷如果狀態來更改UICollectionView的偏移量,代碼如下

- (void)customPan:(UIPanGestureRecognizer *)sender {
        if (sender.state == UIGestureRecognizerStateBegan) {
            self.oldOffset = self.collectionView.contentOffset;
        }
        
        if (sender.state == UIGestureRecognizerStateChanged) {
            CGPoint translation = [sender translationInView:self.collectionView];
            CGPoint offset;
            offset.y = (self.oldOffset.y - translation.y);
            if (fabsf(translation.y)>30) {
                [self.collectionView setContentOffset:offset animated:NO];
            }
        }
        
        if (sender.state == UIGestureRecognizerStateEnded) {
            CGPoint translation = [sender translationInView:self.collectionView];
            self.previousCell = [self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:self.centerItem inSection:0]];
            NSInteger step = 1;
            step = abs(translation.y/item_height)+1;//計算需要走幾步
            
            if (translation.y > 0) {////向上滑動
                if (translation.y > (item_height/2+10)) {
                    if ((0 < self.centerItem) && (self.centerItem <= (self.count - step))) {
                        self.centerItem -= step;
                    }
                }
                
            } else if (translation.y < 0){//向下滑動
                if (abs(translation.y)>(item_height/2+10)) {
                    if ((0 <= self.centerItem) && (self.centerItem < self.count - step)) {
                        self.centerItem += step;
                    }
                }
            }
            [self.collectionView setContentOffset:CGPointMake(0, self.centerItem*item_height) animated:YES];
        }
        
        }

  然后再滾動視圖的scrollViewDidEndScrollingAnimation:的代理方法中來判斷視圖的偏移量如果到首部或者尾部就重新設置UICollectionView的偏移量,這樣沒有絲毫的卡頓感了,但是卻有個很大的缺陷,自定義的手勢沒有是減速的,最多有個滾動結束時的動畫。

    UICollectionView的無限滾動的方法我找了很長時間一直沒有找到很理想的方法,所以這種只能算是個妥協的方法。

另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網頁題目:UICollectionView的無限滾動---妥協做法-創新互聯
當前鏈接:http://m.newbst.com/article16/dceggg.html

成都網站建設公司_創新互聯,為您提供響應式網站網站設計公司外貿建站網頁設計公司App設計企業網站制作

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站網頁設計