Ich versuche, a UIRefreshControl
zu einem hinzuzufügen UICollectionView
, aber das Problem ist, dass das Aktualisierungssteuerelement nur angezeigt wird, wenn die Sammlungsansicht die Höhe des übergeordneten Containers ausfüllt. Mit anderen Worten, es sei denn, die Sammlungsansicht ist lang genug, um einen Bildlauf zu erfordern, kann nicht nach unten gezogen werden, um die Aktualisierungssteuerungsansicht anzuzeigen. Sobald die Sammlung die Höhe ihres übergeordneten Containers überschreitet, wird sie heruntergezogen und zeigt die Aktualisierungsansicht an.
Ich habe ein schnelles iOS - Projekt mit nur einem aufgerichteten UICollectionView
so innerhalb der Hauptansicht mit einem Auslass die Sammlung Ansicht , dass ich das hinzufügen kann , UIRefreshControl
um es in viewDidLoad
. Es gibt auch eine Prototypzelle mit der WiederverwendungskennungcCell
Dies ist der gesamte Code im Controller und zeigt das Problem ziemlich gut. In diesem Code habe ich die Höhe der Zelle auf 100 gesetzt, was nicht ausreicht, um die Anzeige zu füllen. Daher kann die Ansicht nicht gezogen werden und das Aktualisierungssteuerelement wird nicht angezeigt. Stellen Sie einen höheren Wert ein, um die Anzeige zu füllen, dann funktioniert es. Irgendwelche Ideen?
@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
Antworten:
Versuche dies:
self.collectionView.alwaysBounceVertical = YES;
Vollständiger Code für a
UIRefreshControl
quelle
[refreshControl endRefreshing]
.UIScrollView
(eine Übersicht vonUICollectionView
) einerefreshControl
Eigenschaft jetzt developer.apple.com/videos/play/wwdc2016/219/?time=2033Attribute / Bildlaufansicht / Vertikal springen in Storyboard / Xib
quelle
Larrys Antwort in Kürze:
Swift 3:
quelle
UIColor.whiteColor()
beliebige Farbe.action: #selector(self.refresh)
Wenn Ihr
collectionview
Inhalt groß genug ist, um vertikal zu scrollen, ist dies in Ordnung, in Ihrem Fall jedoch nicht.Sie müssen die Eigenschaft aktivieren
AlwaysBounceVertical
, damit Sie sie festlegen könnenself.collectionView.alwaysBounceVertical = YES;
quelle
Auch ich hatte das gleiche Problem. Ich konnte das
UIRefreshControl
erst verwenden, wenn derUICollectionView
Inhalt des Inhalts groß genug war, um vertikal zu scrollen.Das Einstellen der
bounces
Eigenschaft vonUICollectionView
löste diesquelle
Ich rufe
beginRefreshing()
gleich danach anviewDidLoad()
, aber auf einigen Bildschirmen funktioniert es nicht. Und nurcollectionView.layoutIfNeeded()
inviewDidLoad()
hat mir geholfenquelle
Sie müssen den API-Aufruf einchecken, wenn sich die Sammlungsansicht im Aktualisierungsstatus befindet, und dann die Aktualisierung beenden, um die Aktualisierungssteuerung zu schließen.
quelle