Pulso como el desplazamiento infinito de imágenes cargadas desde Amazon Web Services S3

Me gustaría crear una aplicación para iPhone que muestre tres filas de infinitas imágenes que deberían provenir de AWS S3 y que se carguen sobre la marcha mientras el usuario se desplaza hacia la derecha en cada fila. Lo que me gustaría hacer es tener la fila superior pequeña, fila central fila grande e inferior pequeña. El almacenamiento en caching y la carga perezosa inteligente para la gestión de la memory son fundamentales.

Miré a Three20 pero demasiado complicado para una tarea tan simple. Cualquier idea de bibliotecas simples o incluso un enfoque nativo mejor.

Debería echar un vistazo más de cerca a UIScrollView. Apple ha creado esta class para las intenciones específicas de desplazamiento de contenido. Hay muchas muestras disponibles de Apple, y discutieron este tema específico de la reutilización de contenido y el desplazamiento de alta calidad en la WWDC más reciente.

Esta estrategia básica es mostrar el contenido y enlazar la position de desplazamiento en el mismo marco que el hilo de actualización se animaría. Esto resulta en mover el contenido en el momento perfecto para engañar al usuario y creer que el contenido es "infinito".

Revisión: WWDC 2010: Sesión 104: layout de aplicaciones con vistas de desplazamiento

WWDC 2011: Sesión 104 – Técnicas avanzadas de vista de desplazamiento; Sesión 115: desplazarse, deslizar, arrastrar

Si bien el concepto es bastante fácil de entender, ver cómo Apple realiza esta tarea e incorporar sus mejores prácticas resultará en el mejor código que puede escribir para esta plataforma.

Hola Gil Margolin,

Para administrar una tabla de desplazamiento horizontal infinita, la visualización es una buena opción, en lugar de la vista de desplazamiento, puedes gestionar fácilmente los conceptos de carga perezosa en él.

Hay muchos tutoriales sobre ese truco. en ese truco del concepto principal , debemos tomar la tabla como subvista de la celda de la tabla principal y hacer que se transforme.

Consulte los siguientes enlaces para esto,

1) Este es bueno para el truco claro de tableView Cell horizontal.

2) Esta también es buena pero un poco complicada.

Después de esto, puede administrar el concepto de carga lenta en cada tabla de celda y get el resultado que desee.

La mejor de las suertes.

Aquí hay un código nativo para extraer imágenes de S3. La primera es la implementación de h del delegado personalizado S3. El segundo es el file m para get los objects de S3. El método final debe estar en la class de la tabla en la que desea mostrar las imágenes.

@protocol S3ObjectControllerDelegate -(void)S3ControllerFinished:(NSString *)objectKey; @end @interface S3ObjectController :NSObject <AmazonServiceRequestDelegate>{ NSMutableData *responseData; NSString *keyName; AmazonS3Client *s3Client; S3GetObjectRequest *s3GOR; id <S3ObjectControllerDelegate> delegate; } -(void)s3GetRacerPictuers; @property (nonatomic, strong) NSString *keyName; @property (nonatomic, strong) UIImage *image; @property (nonatomic, strong) id <S3ObjectControllerDelegate> delegate; //was assign @end @implementation S3ObjectController @synthesize keyName,image; @synthesize delegate; -(void)request:(AmazonServiceRequest *)request didFailWithError:(NSError *)error { NSLog(@"Error %@",error); } -(void)request:(AmazonServiceRequest *)request didReceiveResponse:(NSURLResponse *)response { //NSLog(@"Response Key %@", response); responseData = [[NSMutableData alloc]init]; } -(void)request:(AmazonServiceRequest *)request didReceiveData:(NSData *)data { //NSLog(@"ObjectRequestKey = %@",request); [responseData appendData:data]; } -(void)request:(AmazonServiceRequest *)request didCompleteWithResponse:(AmazonServiceResponse *)response { UIImage *myImage = [[UIImage alloc]initWithData:responseData]; if(myImage == nil) { //NSLog(@"NO IMAGE"); image = [UIImage imageNamed:@"placeholder.png"]; responseData = nil; } else { //NSLog(@"image added"); image = myImage; responseData = nil; } [[self delegate] S3ControllerFinished:keyName]; } -(void)s3GetPictuers { // NSLog(@"Method Called"); s3Client = [[AmazonS3Client alloc] initWithAccessKey:ACCESS_KEY_ID withSecretKey:SECRET_KEY]; s3GOR = [[S3GetObjectRequest alloc]initWithKey:keyName withBucket:[Constants pictureBucket]]; s3GOR.delegate = self; [s3Client getObject:s3GOR]; //NSLog(@"Method Finished"); } @end -(void)S3ControllerFinished:(NSString *)objectKey { S3ObjectController *newS3 = [[S3ObjectController alloc] init]; newS3 = [tempDictionary objectForKey:objectKey]; UIImage *tempImage = newS3.image; [dictionaryOfImages setObject:tempImage forKey:objectKey]; [table reloadData]; }