Saya mencoba menambahkan a UIRefreshControl
ke UICollectionView
, tetapi masalahnya adalah bahwa kontrol penyegaran tidak muncul kecuali tampilan koleksi mengisi ketinggian wadah induknya. Dengan kata lain, kecuali tampilan koleksi cukup panjang untuk memerlukan pengguliran, itu tidak dapat ditarik ke bawah untuk mengungkapkan tampilan kontrol penyegaran. Segera setelah koleksi melebihi ketinggian wadah induknya, itu ditarik ke bawah dan mengungkapkan tampilan penyegaran.
Saya telah menyiapkan sebuah proyek iOS cepat dengan hanya UICollectionView
dalam tampilan utama, dengan outlet ke tampilan koleksi sehingga saya dapat menambahkan UIRefreshControl
untuk itu dalam viewDidLoad
. Ada juga sel prototipe dengan reuse identifiercCell
Ini semua kode di controller, dan itu menunjukkan masalah dengan cukup baik. Dalam kode ini saya mengatur ketinggian sel ke 100, yang tidak cukup untuk mengisi tampilan, dan oleh karena itu tampilan tidak dapat ditarik dan kontrol penyegaran tidak akan ditampilkan. Atur ke sesuatu yang lebih tinggi untuk mengisi tampilan, lalu berfungsi. Ada ide?
@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
Jawaban:
Coba ini:
self.collectionView.alwaysBounceVertical = YES;
Kode lengkap untuk a
UIRefreshControl
sumber
[refreshControl endRefreshing]
.UIScrollView
(sebuah superview ofUICollectionView
) memilikirefreshControl
properti sekarang developer.apple.com/videos/play/wwdc2016/219/?time=2033Atribut / Tampilan Gulir / Terpental secara vertikal di Storyboard / Xib
sumber
Jawaban Larry dengan cepat:
Swift 3:
sumber
UIColor.whiteColor()
atau warna apa pun yang Anda suka.action: #selector(self.refresh)
Jika
collectionview
ukuran konten Anda cukup besar untuk digulirkan secara vertikal, tidak apa-apa, tetapi dalam kasus Anda tidak.Anda harus mengaktifkan properti
AlwaysBounceVertical
, sehingga Anda dapat mengaturself.collectionView.alwaysBounceVertical = YES;
sumber
Saya juga menghadapi masalah yang sama, saya tidak dapat menggunakan
UIRefreshControl
sampaiUICollectionView
ukuran konten cukup besar untuk menggulir secara vertikal,Pengaturan
bounces
propertiUICollectionView
diselesaikan inisumber
Saya menelepon
beginRefreshing()
segera setelah ituviewDidLoad()
, tetapi pada beberapa layar tidak berfungsi. Dan hanyacollectionView.layoutIfNeeded()
diviewDidLoad()
membantukusumber
Anda harus memeriksa panggilan api jika tampilan koleksi dalam keadaan menyegarkan kemudian mengakhiri penyegaran untuk menghilangkan kontrol penyegaran.
sumber