Vista griglia in iOS [chiusa]
-
20-09-2019 - |
Domanda
Vorrei creare una visualizzazione a griglia nel mio iPhone app simile a quello mostrato nelle iPad foto App . C'è una biblioteca o di un quadro a disposizione per l'aggiunta di questo tipo di funzionalità (non SDK)? Idealmente vorrei sviluppare finalmente una versione iPad della app, dove la griglia sarebbe larghe 3 articoli nel ritratto e 4 nel paesaggio, ma per il momento vorrei larghe da 2 articoli nel ritratto e 3 di larghezza nel paesaggio.
L'unico modo che posso pensare di fare questo è di sottoclassi UITableView e avere un cellulare personalizzato che crea le 2 o 3 elementi. Questo però sembra disordinato e sono sicuro che ci sia un modo migliore.
Un elemento tipico avrà un quadro, l'etichetta e il pulsante -. Niente di troppo complicato
Soluzione
È comunque possibile utilizzare l'UITableView per questo e non avrebbe bisogno di sottoclasse esso. Come hai detto tutto quello che dovete fare è creare il proprio cellulare personalizzato che non è complicato. Non disordinato a tutti:)
Altri suggerimenti
Per iOS 6 e sopra vi consiglio UICollectionView e PSTCollectionView .
L'obiettivo è quello di utilizzare PSTCollectionView su iOS 4/5 come ripiego e passare UICollectionView su iOS6. Persino usiamo certi trucchi runtime per creare UICollectionView in fase di esecuzione per le versioni precedenti di iOS. Idealmente, basta collegare i file e tutto funziona sui vecchi sistemi.
Nel 2010 ho consigliato AQGridView
Sono consapevole questo è molto vecchio ma ero alla ricerca di risposta a questa e testato diverse soluzioni. Ho trovato GMGridView è stato uno dei migliori, meno soluzioni buggy. Check it out a https://github.com/gmoledina/GMGridView .
Per rendere semplice visualizzazione a griglia in vista tabella creare classe "GridViewCell" e nell'intestazione file del componente aggiuntivo:
@interface GridViewCell : UITableViewCell
@property (nonatomic, strong) UIButton *column1;
@property (nonatomic, strong) UIButton *column2;
@property (nonatomic, strong) UIButton *column3;
@end
in .m file di aggiungere questo codice:
#define CELL_WIDTH 100
#define CELL_HEIGHT 80
#import "GridViewCell.h"
@implementation GridViewCell
@synthesize column1, column2, column3;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
column1 = [[UIButton alloc] initWithFrame:CGRectMake(5, 5, CELL_WIDTH, CELL_HEIGHT)];
[self addSubview:column1];
column2 = [[UIButton alloc] initWithFrame:CGRectMake(CELL_WIDTH+ 10, 5, CELL_WIDTH, CELL_HEIGHT)];
[self addSubview:column2];
column3 = [[UIButton alloc] initWithFrame:CGRectMake(CELL_WIDTH + CELL_WIDTH + 15, 5, CELL_WIDTH, CELL_HEIGHT)];
[self addSubview:column3];
}
return self;
}
@end
e quando si crea la tabella di utilizzare nuova classe "GridView" in delegato cellForRowAtIndexPath:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
GridViewCell *cell = (GridViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[GridViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
[cell.column1 setBackgroundColor:[UIColor blackColor]];
[cell.column2 setBackgroundColor:[UIColor blackColor]];
[cell.column3 setBackgroundColor:[UIColor blackColor]];
return cell;
}
NRGridView sembra essere il miglior modo per aggirare. Lo si può trovare qui .
Ha i metodi simili come UITableView. Le cellule possono essere adattati come necessario.
Ti consiglio di utilizzare UITableViewCells personalizzati. In iOS 5 non si dispone di sottoclasse loro. Basta aggiungere un tableView al progetto, aggiungere le cellule prototipo (= cella personalizzato) utilizzando Xcode alla tableView, dare loro un identificatore univoco e utilizzare questo identificatore in cellForRowAtIndexPath per annullare l'accodamento e istanziare tuo cellulare personalizzato. Quindi impostare la cella e restituirlo.