水平UICollectionView我有了1行中的定製水平收集觀點,我想補充拉刷新功能,它在默認情況下,會出現我上面的細胞行。我希望用戶能夠從左向右拉動集合視圖來激活UIRefreshControl。有任何想法嗎?與UIRefreshControl
在此先感謝。
水平UICollectionView我有了1行中的定製水平收集觀點,我想補充拉刷新功能,它在默認情況下,會出現我上面的細胞行。我希望用戶能夠從左向右拉動集合視圖來激活UIRefreshControl。有任何想法嗎?與UIRefreshControl
在此先感謝。
爲此,您需要實現UIScrollViewDelegate方法
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGPoint offset = scrollView.contentOffset;
CGRect bounds = scrollView.bounds;
CGSize size = scrollView.contentSize;
UIEdgeInsets inset = scrollView.contentInset;
float y = offset.x + bounds.size.width - inset.right;
float h = size.width;
float reload_distance = 75; //distance for which you want to load more
if(y > h + reload_distance) {
// write your code getting the more data
NSLog(@"load more rows");
}
}
基本上上面的反應告訴你如何使用Objective-C做負載更多的UICollectionView。不過,我相信問題是如何在該組件上進行水平刷新。
我不認爲你可以水平增加UIRefreshControl但考慮到前面的代碼,使轉換到斯威夫特,我想出了以下一個
不要忘記設置您的UICollectionView反彈性質爲true
func scrollViewDidScroll(scrollView: UIScrollView) {
let offset = scrollView.contentOffset
let inset = scrollView.contentInset
let y: CGFloat = offset.x - inset.left
let reload_distance: CGFloat = -75
if y < reload_distance{
scrollView.bounces = false
UIView.animateWithDuration(0.3, animations: {() -> Void in
scrollView.setContentOffset(CGPointMake(0, 0), animated: false)
}, completion: { (Bool) -> Void in
scrollView.bounces = true
})
}
}
此外,爲了避免與連續拉問題我添加了一些代碼以刪除臨時彈跳,動畫德回捲到右側,然後再次啓用彈跳。這會給你與UIRefreshControl相同的效果。
最後,如果你想有一個加載圖標我的建議是將其添加的幕後控制人,所以當你拉你可以看到它背後
只是增加了Julio Bailon的答案,其工作的對象 - 版本用於將collectionView從其頂部即左至右拉動
CGPoint offset = scrollView.contentOffset;
CGRect bounds = scrollView.bounds;
CGSize size = scrollView.contentSize;
UIEdgeInsets inset = scrollView.contentInset;
float y = offset.x - inset.left;
float h = size.width;
float reload_distance = -75; //distance for which you want to load more
if(y < reload_distance) {
// write your code getting the more data
NSLog(@"load more rows");
}
感謝您獲取上述代碼。只是想提及它適用於當您想要在滾動tableview/collectionview結束後加載更多數據,而非頂級時。 – hyd00