[ios] UICollectionView上的UIRefreshControl僅在集合填充容器的高度時起作用



1 Answers

屬性/滾動查看/在Storyboard / Xib中垂直彈出

Question

我試圖將一個UIRefreshControl添加到UICollectionView ,但問題是除非集合視圖填充其父容器的高度,否則不會顯示刷新控件。 換句話說,除非集合視圖足夠長以至於需要滾動,否則無法將其拉下以顯示刷新控制視圖。 只要集合超過其父容器的高度,它就會被拉下並顯示刷新視圖。

我已經在主視圖中設置了一個只有UICollectionView的快速iOS項目,並帶有集合視圖的出口,以便我可以在viewDidLoad UIRefreshControl添加到它。 還有一個重用標識符cCell的原型單元

這是控制器中的所有代碼,它可以很好地解決問題。 在此代碼中,我將單元格的高度設置為100,這不足以填充顯示,因此無法拉取視圖,並且不會顯示刷新控件。 將其設置為更高的值以填充顯示屏,然後運行。 有任何想法嗎?

@interface ViewController () <UICollectionViewDelegateFlowLayout, UICollectionViewDataSource>
@property (strong, nonatomic) IBOutlet UICollectionView *collectionView;
@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
    [self.collectionView addSubview:refreshControl];
}

-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
    return 1;
}

-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    return 1;
}

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    return [collectionView dequeueReusableCellWithReuseIdentifier:@"cCell" forIndexPath:indexPath];
}

-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
    return CGSizeMake(self.view.frame.size.width, 100);
}



如果你的collectionview的內容尺寸足夠大,可以垂直滾動,那麼可以,但是你的情況並非如此。

您必須啟用屬性AlwaysBounceVertical ,以便您可以設置self.collectionView.alwaysBounceVertical = YES;




Related