por organizar ordenar lugares fotos fecha crear como carpetas archivos album iphone objective-c ios

ordenar - como organizar fotos en iphone 7



Cómo crear una galería en iOS (8)

Aquí hay una muy buena biblioteca llamada FGallery para iOS

-Soporta auto-rotación

-vista en miniatura

-enfocar

-borrar

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

La vista debería ser algo como esto (o la aplicación de fotos):

Sin embargo, hacer una vista de esta manera es problemático, primero porque usa una dimensión fija, y creo que es un poco difícil de implementar (para mí).

La otra forma es usar una celda personalizada dentro de una vista de tabla, como esta:

pero todavía está usando una dimensión fija.

¿Cuál es la mejor manera de crear una galería, sin usar ninguna lib de tercera parte (como Three20)?

Gracias por cualquier respuesta :)

PD. Creo que usar una dimensión fija es malo debido al nuevo iphone 4 (con una resolución diferente), ¿estoy en lo cierto?


Debería revisar AQGridView que hace exactamente lo que está tratando de lograr. Incluso si desea escribir su propio código personalizado, eche un vistazo a la fuente AQGridView ya que probablemente necesitará usar un UIScrollView como base.




Hice algo muy similar a esto en un proyecto propio. Acabo de mostrar algunas partes del código aquí, pero si desea ver el código completo, puede verlo en GitHub GitHub Repo

Primero creé una celda de vista de colección personalizada 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

Luego, en la vista donde quieres tener las miniaturas, configura CollectionView

en ThumbNailViewController.m (fragmento de código)

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

Luego tienes los métodos requeridos para las vistas de colección. Aquí puedes configurar lo que

//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 eso conteste tu pregunta.


La diferencia en la resolución no debería ser un problema ya que iOS, si recuerdo correctamente, amplía los componentes de la IU y las imágenes a la resolución correcta si detecta que tiene una pantalla retina. Un lado; recuerde comenzar a crear versiones de alta / baja resolución de sus gráficos si tiene la intención de admitir ambos tamaños de pantalla sin degradar la calidad.

Mientras diseñes las cosas en términos de puntos en lugar de píxeles (que es la forma en que se hace en XCode 4), iOS podrá manejar la escala de forma transparente. En una pantalla pequeña, un punto será un píxel, mientras que será dos píxeles en una pantalla de retina. Esto le permite renderizar cosas con un aspecto más nítido en las pantallas de retina. Source

Sé que esta pregunta es antigua, pero no vi a nadie que abordara el problema de los anchos fijos, así que pensé que podría contribuir por una vez.


Si no desea utilizar una biblioteca de terceros, debe hacer esto en las filas de UITableView. Debido a la forma en que UITableView almacena en caché las celdas, es relativamente liviano en la memoria. Ciertamente más que un UIView posiblemente muy grande dentro de un UIScrollView. Lo he hecho en ambos sentidos, y estaba mucho más feliz con el UITableView.

Dicho eso, ¿la próxima vez tengo que hacer esto? Planeo usar AQGridView.