que - Vista de cuadrícula en iPhone SDK
cuadricula camara iphone ios 11 (6)
Me gustaría crear una vista de cuadrícula en mi aplicación de iPhone similar a la que se muestra en la aplicación de fotos de iPad . Sé que el iPhone 3.2 SDK está bajo NDA, pero hay una biblioteca o marco disponible para agregar este tipo de funcionalidad (no SDK). Idealmente, me gustaría desarrollar una versión para iPad de la aplicación, donde la cuadrícula tendría 3 elementos de ancho en vertical y 4 en horizontal, sin embargo, por el momento quisiera 2 elementos de ancho en vertical y 3 de ancho en horizontal.
La única forma en que puedo pensar en hacer esto es mediante la subclasificación de UITableView y tener una celda personalizada que cree los 2 o 3 elementos. Sin embargo, esto parece desordenado y estoy seguro de que hay una mejor manera.
Un elemento típico tendrá una imagen, una etiqueta y un botón, nada demasiado complicado.
Gracias
Aún puedes usar el UITableView para esto y no necesitarías subclasificarlo. Como dijiste, todo lo que tienes que hacer es crear tu propia celda personalizada, lo cual no es complicado. No desordenado en absoluto :)
NRGridView parece ser la mejor manera de evitarlo. Puedes encontrarlo here .
Tiene los métodos similares a UITableView. Las celdas se pueden personalizar según sea necesario.
Para hacer una vista de cuadrícula simple en su vista de tabla, cree la clase "GridViewCell" y agregue en el archivo de encabezado:
@interface GridViewCell : UITableViewCell
@property (nonatomic, strong) UIButton *column1;
@property (nonatomic, strong) UIButton *column2;
@property (nonatomic, strong) UIButton *column3;
@end
en el archivo .m agregue este código:
#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
y cuando cree su tabla, use la nueva clase "GridView" en delegate 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;
}
Para iOS 6 y superior recomiendo UICollectionView y PSTCollectionView .
El objetivo es utilizar PSTCollectionView en iOS 4/5 como alternativa y cambiar a UICollectionView en iOS6. Incluso utilizamos ciertos trucos de tiempo de ejecución para crear UICollectionView en tiempo de ejecución para versiones anteriores de iOS. Idealmente, simplemente vinculas los archivos y todo funciona en sistemas más antiguos.
En el año 2010 recomendé AQGridView
Soy consciente de que esto es muy antiguo, pero estaba buscando una respuesta para esto y probé varias soluciones. Descubrí que GMGridView era una de las mejores soluciones, con menos errores. Compruébelo en https://github.com/gmoledina/GMGridView .
Yo recomendaría usar UITableViewCells personalizados. En iOS 5 no tienes que subclasificarlos. Simplemente agregue un tableView a su proyecto, agregue un prototipo de celdas (= celda personalizada) usando Xcode a la tableView, déles un identificador único y use este identificador en cellForRowAtIndexPath para poner en cola e instanciar su celda personalizada. Luego configura la celda y devuélvela.