So ändern Sie die UICollectionView footerview Höhe programmgesteuert
Ich Laufe in ein Problem, in meinem UICollectionView, brauche ich anzeigen, um eine Fußzeile, wenn der Datensatz zurückgegeben wird, ist 0. Die codes unten scheint eine gute Arbeit, wenn es keine Aufzeichnungen, Fußzeile angezeigt. Allerdings gibt es ein Problem, wenn es gibt Aufzeichnungen, obwohl die Fußzeile wird ausgeblendet, code-ZEILE 1 scheint keine Auswirkungen haben, was bedeutet, dass der leere Raum der footer ist immer noch da. Eine Idee, wie man es loswerden? ich.e ändern Sie die Fußzeile ' E Höhe auf 0 , oder entfernen Sie einfach die Fußzeile, wenn es Datensatz zurückgegeben.
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section {
CGSize footerSize = CGSizeMake(320, self.view.frame.size.height);
return footerSize;
}
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
UICollectionReusableView *reusableview = nil;
if (kind == UICollectionElementKindSectionFooter) {
reusableview = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"FooterView" forIndexPath:indexPath];
reusableview.hidden = YES;
if([topicArray count]>0){
reusableview.hidden = YES;
//reusableview.frame = CGRectMake(0, 0, 0, 0);
CGRect newFrame = reusableview.frame;
newFrame.size.height =0;
reusableview.frame = newFrame; //<-------- LINE 1.
}else{
reusableview.hidden = NO;
reusableview.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
UIImageView *oopsImgView =[[UIImageView alloc] initWithFrame:CGRectMake(60, 130,200,154)];
UILabel *label=[[UILabel alloc] ....;
label.adjustsFontSizeToFitWidth = YES;
label.textAlignment = NSTextAlignmentCenter;
label.lineBreakMode = NSLineBreakByWordWrapping;
label.numberOfLines = 0;
label.font = [UIFont boldSystemFontOfSize:16.0f];
label.minimumScaleFactor = 10.0f/15.0f;
[reusableview addSubview:label];
}
}
return reusableview;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Btw, was ist Ihre
self.view.frame.size.height
? Ich hoffe, das ist definitiv nicht null sein, in jedem moment. Daself.view
ist die Ansicht von oben in der Hierarchie innerhalb des view-Controllers.Müssen Sie nicht zum ändern der Fußzeile Größe in
viewForSupplementaryElementOfKind:
Methode. Alles, was Sie zu finden, wenn Sie nicht sollten, zeigen Sie Ihre Fußzeile in einem bestimmten Abschnitt.Versuchen Sie dies und lassen Sie mich wissen, wenn dieses für Sie arbeitet.