Sto cercando di aggiungere a UIRefreshControl
a UICollectionView
, ma il problema è che il controllo di aggiornamento non viene visualizzato a meno che la vista della raccolta non riempia l'altezza del contenitore principale. In altre parole, a meno che la vista della raccolta non sia abbastanza lunga da richiedere lo scorrimento, non può essere trascinata verso il basso per rivelare la vista del controllo di aggiornamento. Non appena la raccolta supera l'altezza del contenitore principale, viene tirata giù e rivela la vista di aggiornamento.
Ho impostato un progetto iOS rapido con solo una vista UICollectionView
interna, con uno sbocco alla vista raccolta in modo da poter aggiungere UIRefreshControl
ad esso viewDidLoad
. Esiste anche una cella prototipo con l'identificatore di riutilizzocCell
Questo è tutto il codice nel controller e dimostra abbastanza bene il problema. In questo codice ho impostato l'altezza della cella su 100, che non è sufficiente per riempire il display, quindi la vista non può essere estratta e il controllo di aggiornamento non mostrerà. Impostalo su qualcosa di più alto per riempire il display, quindi funziona. Qualche idea?
@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);
}
alwaysBounceVertical