Я пытаюсь добавить UIRefreshControl
к a UICollectionView
, но проблема в том, что элемент управления обновлением не появляется, если представление коллекции не заполняет высоту своего родительского контейнера. Другими словами, если представление коллекции не достаточно длинное, чтобы требовать прокрутки, его нельзя развернуть, чтобы открыть представление управления обновлением. Как только коллекция превышает высоту своего родительского контейнера, она опускается и открывает представление обновления.
Я настроил быстрый проект iOS с UICollectionView
основным внутренним представлением, с выходом в представление коллекции, чтобы я мог добавить UIRefreshControl
его в viewDidLoad
. Существует также прототип ячейки с идентификатором повторного использования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);
}
alwaysBounceVertical
Ответы:
Попробуй это:
self.collectionView.alwaysBounceVertical = YES;
Полный код для
UIRefreshControl
источник
[refreshControl endRefreshing]
.UIScrollView
(суперпредставлениеUICollectionView
) теперь естьrefreshControl
свойство developer.apple.com/videos/play/wwdc2016/219/?time=2033Атрибуты / Вид прокрутки / Отскок вертикально в раскадровке / Xib
источник
Ларри быстро отвечает:
Свифт 3:
источник
UIColor.whiteColor()
или любой другой цвет, который вам нравится.action: #selector(self.refresh)
Если у вас
collectionview
достаточно большой размер контента для вертикальной прокрутки, это нормально, но в вашем случае это не так.Вы должны включить свойство
AlwaysBounceVertical
, чтобы вы могли установитьself.collectionView.alwaysBounceVertical = YES;
источник
Я тоже столкнулся с той же проблемой, я не мог использовать,
UIRefreshControl
покаUICollectionView
размер содержимого не был достаточно большим для прокрутки по вертикали,Установка
bounces
свойстваUICollectionView
решена этимисточник
Я звоню
beginRefreshing()
сразу после этогоviewDidLoad()
, но на некоторых экранах это не работает. И толькоcollectionView.layoutIfNeeded()
вviewDidLoad()
помощь мнеисточник
Вы должны проверить вызов API, если представление коллекции находится в состоянии обновления, а затем завершить обновление, чтобы отключить управление обновлением.
источник