Estoy empezando a desarrollar una sencilla aplicación para iOS, y esta aplicación es una simple galería de la fotografía (tomada de un sitio web).
El primer problema que me encontré es cómo crear la vista de la galería.

El punto de vista debe ser algo como esto (o la Aplicación de Fotos):
Cómo Crear Una Galería de fotos en iOS

sin embargo haciendo una vista de esta manera es problemático, primero, porque se utiliza la dimensión fija, y creo que es un poco difícil de aplicar (para mí).

La otra forma es usar un celular dentro de un formato tableview, como este:
Cómo Crear Una Galería de fotos en iOS

pero todavía es el uso de dimensión fija.

¿Cuál es la mejor forma de crear una galería, sin el uso de cualquier tercera parte lib (como Three20)?

Gracias por la respuesta 🙂

PS. Yo creo que el uso de dimensión fija es mala, debido a que el nuevo iphone 4 (con una resolución diferente), estoy en lo cierto?

InformationsquelleAutor patrick | 2010-10-05

8 Comentarios

  1. 36

    Usted debe comprobar fuera de AQGridView que hace exactamente lo que usted está tratando de lograr. Incluso si usted quiere escribir su propio código personalizado, eche un vistazo a la AQGridView fuente como la más que probable que usted tendrá que utilizar un UIScrollView como base.

  2. 6

    La diferencia en la resolución no debería ser un problema ya que iOS, si recuerdo correctamente, escala de componentes de interfaz de usuario y las imágenes a la derecha de la resolución si detecta que tiene una pantalla de retina. Aparte, recuerda que para empezar a hacer hi/lo-res versiones de sus gráficos si usted tiene la intención de apoyar tanto a los tamaños de pantalla sin degradación de la calidad.

    Mientras que el diseño de las cosas en términos de puntos, en lugar de píxeles (que es la manera que se hace en XCode 4), iOS será capaz de manejar el escalado de forma transparente. En una pequeña pantalla de un punto será uno de los píxeles, mientras que será de dos píxeles en una pantalla de la retina. Esto permite que para hacer las cosas con un cajón mirar en las pantallas de retina. Fuente

    Sé que esta pregunta es viejo, pero yo no veo a nadie abordar la cuestión de ancho fijo, así que he pensado que me gustaría contribuir, por una vez.

  3. 2

    Si usted no desea utilizar una biblioteca de terceros, usted debe hacer esto en UITableView filas. Debido a la forma en UITableView cachés de las células, es relativamente ligero en la memoria. Sin duda lo que más de una posibilidad muy grande de UIView dentro de un UIScrollView. Yo lo he hecho de las dos maneras, y yo era mucho más feliz con la UITableView.

    Que dijo, la próxima vez tengo que hacer esto? Voy a utilizar AQGridView.

  4. 2

    Um, desde ios6 salió, la forma correcta de hacerlo es con las Vistas de Colección:

    Apple Docs en CollectionViews

    También, ver las dos sesiones de la WWDC 2012 en ellos:

    Introducción a las Vistas de Colección

    Avanzada La Colección De Vistas

    Tristemente, Apple no ha de incluir una galería o coverflow de diseño, pero es bastante fácil de hacer uno.

    • Voy a revisar esto. Funciona en iOS 5?
    • Nº 6, pero al menos debe estar apuntando en esa dirección.
    • los punteros para una galería de diseño con UICollectionViews?
    • ese es el defecto.. el docs son bastante buenos en realidad, y desde este post, he tenido ocasión de hacer estanterías, etc., en los proyectos, no está mal..
  5. 2

    Escribí un tutorial sobre la construcción de una galería de medios utilizando un UICollectionView. Rellena el usuario de la biblioteca de fotos. Creo que va a funcionar perfectamente para lo que usted está tratando de hacer.

    Programación del iPhone Tutorial: Crear Una Galería de Imágenes Como la Sobre – Parte 1

    Espero que ayude. Saludos!

    • Gracias. Aunque esta pregunta en realidad fue publicado hace dos años, su puesto podría ser útil. Por cierto que es mejor para publicar la solución completa aquí.
  6. 2

    Me hizo algo muy similar a este en un proyecto de mi propia. Me acaba de mostrar algunas partes del código de aquí, pero si quieres ver el código completo se puede ver en GitHub Repo De GitHub

    Primero hice una Colección personalizada de Vista de la celda con un ImageView

    en CustomCollectionCell.h

    #import <UIKit/UIKit.h>
    
    @interface CustomCollectionCell : UICollectionViewCell
    
    @property (nonatomic , retain) UIImageView *imageView;
    @end

    en CustomCollectionCell.m

    #import "CustomCollectionCell.h"
    
    @implementation CustomCollectionCell
    - (id)initWithFrame:(CGRect)frame {
        self = [super initWithFrame:frame];
        if (self) {
            [self setupImageView];
        }
        return self;
    }
    
    #pragma mark - Create Subviews
    
    - (void)setupImageView {
        self.imageView = [[UIImageView alloc] initWithFrame:self.bounds];
        self.imageView.autoresizingMask = UIViewAutoresizingNone;//UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
        [self addSubview:self.imageView];
    }
    
    @end

    A continuación, en la vista donde usted quiere tener las miniaturas de configurar el CollectionView

    en ThumbNailViewController.m (fragmento)

    UICollectionView *collectionViewThumbnails;

    en ThumbNailViewController.m (fragmento)

    UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc] init];
    collectionViewThumbnails=[[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height - 50) collectionViewLayout:layout];
    if (collectionViewThumbnails && layout)
    {
        [collectionViewThumbnails setDataSource:self];
        [collectionViewThumbnails setDelegate:self];
        [collectionViewThumbnails registerClass:[CustomCollectionCell class] forCellWithReuseIdentifier:@"cellIdentifier"];
        [collectionViewThumbnails setBackgroundColor:[UIColor blackColor]];
    
        [self.view addSubview:collectionViewThumbnails];
    }

    Entonces usted tiene los métodos necesarios para la recogida de opiniones. Aquí usted puede configurar lo que te

    //Number of items in the collectionview
    - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
    {
    return [galleryData count];
    }
    //Set up what each cell in the collectionview will look like
    //Here is where you add the thumbnails and the on define what happens when the cell is clicked 
    - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
    {
    //initialize custom cell for the collectionview
    CustomCollectionCell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath];
    [cell.imageView setClipsToBounds:YES];
    cell.imageView.contentMode = UIViewContentModeScaleAspectFill;
    //format url to load image from
    NSString *url = [NSString stringWithFormat:@"http://andrecphoto.weebly.com/uploads/6/5/5/1/6551078/%@",galleryData[indexPath.item]];
    //load thumbnail
    [cell.imageView setImageWithURL:[NSURL URLWithString:url]
    placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
    //Sets up taprecognizer for each cell. (onlcick)
    UITapGestureRecognizer *tap=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
    [cell addGestureRecognizer:tap];
    //sets cell's background color to black
    cell.backgroundColor=[UIColor blackColor];
    return cell;
    }
    //Sets size of cells in the collectionview
    - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
    {
    return CGSizeMake(100, 100);
    }
    //Sets what happens when a cell in the collectionview is selected (onlclicklistener)
    - (void)handleTap:(UITapGestureRecognizer *)recognizer  {
    //gets the cell thats was clicked
    CustomCollectionCell *cell_test = (CustomCollectionCell *)recognizer.view;
    //gets indexpath of the cell
    NSIndexPath *indexPath = [collectionViewThumbnails indexPathForCell:cell_test];
    if (isConnectedGal)
    {
    //sets the image that will be displayed in the photo browser
    [photoGallery setInitialPageIndex:indexPath.row];
    //pushed photobrowser
    [self.navigationController pushViewController:photoGallery animated:YES];
    }
    }

    Espero que eso responda tu pregunta.

  7. 1

    Aquí es una muy buena biblioteca llamada FGallery para iOS

    -Soporta auto-rotación

    -la Vista de miniaturas

    -zoom

    -eliminar

Dejar respuesta

Please enter your comment!
Please enter your name here