Pergunta

Eu gostaria de criar uma visão de grade no meu aplicativo para iPhone semelhante ao mostrado no aplicativo de fotos do iPad. Existe uma biblioteca ou estrutura disponível para adicionar esse tipo de funcionalidade (não SDK)? Idealmente, eu gostaria de desenvolver uma versão para iPad do aplicativo, onde a grade teria 3 itens de largura em retrato e 4 na paisagem, no entanto, por enquanto, eu gostaria de 2 itens de largura em retrato e 3 de largura na paisagem.

A única maneira de pensar em fazer isso é subclassendo o UitableView e tendo uma célula personalizada que cria os 2 ou 3 itens. No entanto, isso parece confuso e tenho certeza de que há uma maneira melhor.

Um item típico terá uma imagem, rótulo e botão - nada muito complicado.

Foi útil?

Solução

Você ainda pode usar o uabableView para isso e não precisará subclassá -lo. Como você disse, tudo o que você precisa fazer é criar sua própria célula personalizada, que não é complicada. Não está bagunçado :)

Outras dicas

Para iOS 6 ou acima eu recomendo UicollectionView e PSTCollectionView.

O objetivo é usar o PSTCollectionView no iOS 4/5 como fallback e alternar para o UicollectionView no iOS6. Até usamos certos truques de tempo de execução para criar o UicollectionView no tempo de execução para versões mais antigas do iOS. Idealmente, basta vincular os arquivos e tudo funciona em sistemas mais antigos.

No ano de 2010, eu recomendei AQGRIDVIEW

Estou ciente de que isso é muito antigo, mas eu estava procurando resposta a isso e testei várias soluções. Eu achei que o GMGridView era uma das melhores e menos soluções de buggy. Confira em https://github.com/gmoledina/gmgridview.

Para fazer a visualização simples da grade na sua tabela View Create Class "GridViewCell" e no arquivo de cabeçalho Adicionar:

@interface GridViewCell : UITableViewCell

@property (nonatomic, strong)  UIButton *column1;
@property (nonatomic, strong)  UIButton *column2;
@property (nonatomic, strong)  UIButton *column3;

@end

In .m Arquivo Adicione 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

E quando você cria sua tabela, use a nova classe "Gridview" no delegado CellFororrowatIndexpath:

- (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;
}

O NRGridView parece ser a melhor maneira de contornar. Você pode encontrá lo aqui.

Possui métodos semelhantes aos UitableView. As células podem ser personalizadas conforme necessário.

Eu recomendaria o uso de células do Uitable UitableViewCells. No iOS 5, você não precisa subclassá -los. Basta adicionar um tabela de tabela ao seu projeto, adicionar um protótipo de células (= célula personalizada) usando o Xcode ao TableView, dar a eles um identificador exclusivo e usar esse identificador no CellForgunderindexpath para desaceder e instanciar sua célula personalizada. Em seguida, defina a célula e retorne -a.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top