2011-12-01 13 views
7

Los últimos días he tratado de implementar un Visualizador de fotos en mi aplicación iOS 5.0 en Xcode 4.2. Por proyecto se está ejecutando con conteo automático de referencias (ARC). Lo intenté Three20 Photo Viewer pero esto tiene muchas dependencias y es realmente una pieza difícil de incluir en mi proyecto. Luego probé EGOPhotoViewer, lo que realmente parece una gran solución para mi propósito, pero lamentablemente no soporto ARC y por eso no puedo compilarlo dentro de mi proyecto.Objective-C: Photo Viewer para iOS con soporte ARC?

¿Alguien conoce un Visualizador de fotos para iOS que sea compatible con ARC, o podría, de alguna manera, ser agregado como una biblioteca a un proyecto que se ejecute con ARC?

Respuesta

12

Es posible desactivar ARC para archivos individuales agregando el -fno-objc-arc a un archivo.

Para desactivar ARC para seleccionar un archivo de su proyecto en Xcode 4, vaya a las fases de construcción pestaña, seleccione los archivos que desea desactivar para ARC, agregue el indicador del compilador -fno-objc arco a éstos archivos.

+0

que piensa! Eso realmente me salvó el día. – dhrm

15

Es posible que desee echar un vistazo a MWPhotoBrowser - puede agregarlo a su proyecto como una biblioteca estática que funcionará independientemente de la configuración de ARC de su proyecto.

MWPhotoBrowser puede mostrar una o más imágenes al proporcionar objetos UIImage, o URL a archivos, imágenes web o recursos de la biblioteca. El navegador de fotos maneja la descarga y el almacenamiento en caché de fotos de la web sin problemas. Las fotos se pueden ampliar y panoramizar, y se pueden mostrar subtítulos opcionales (personalizables). El navegador también se puede usar para permitir al usuario seleccionar una o más fotos utilizando la cuadrícula o la vista de la imagen principal.

MWPhotoBrowser Screenshots

+0

Parece muy útil. Actualmente estoy usando EGOPhotoViewer para mi proyecto. ¿Conoces las ventajas de tu navegador en comparación con EGOPhotoViewer? – dhrm

+0

Una cosa; deberías hacer que sea más fácil agregar soporte para múltiples idiomas. – dhrm

+1

Gracias! Solo he echado un vistazo rápido a EGOPhotoViewer, pero creo que son bastante similares. Intenté hacer que la mía fuera muy limpia, fácil de usar y optimizada; ¡juega si tienes tiempo! Gracias por la sugerencia de múltiples idiomas. Solo hay unas pocas cuerdas que se verán afectadas, así que no debería ser difícil. ¡Lo miraré! –

0

Así es como lo hice:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 
{ 
    self.startX = scrollView.contentOffset.x; 
} 

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 
{ 
    //NSLog(@"scrollViewDidEndDragging"); 
    self.endX = scrollView.contentOffset.x; 

    self.photoIdx = (int)self.startX/Normalize(1160); 

    if (decelerate == FALSE) 
    { 
    int intoThePhoto = (int)self.photoScrollView.contentOffset.x % Normalize(1160); 

    if (intoThePhoto < Normalize(1060/2)) 
     [scrollView setContentOffset:CGPointMake(Normalize(1160)*self.photoIdx,0) animated:YES]; 
    else 
     [scrollView setContentOffset:CGPointMake(Normalize(1160)*(self.photoIdx+1),0) animated:YES]; 

    } 

} 

-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{ 

    if ((self.endX - self.startX) > 0 && self.photoIdx < ([self.photos count] -1)) 
    [scrollView setContentOffset:CGPointMake(Normalize(1160)*(self.photoIdx+1),0) animated:YES]; 
    else if ((self.endX - self.startX) < 0 && self.photoIdx != 0) 
    [scrollView setContentOffset:CGPointMake(Normalize(1160)*(self.photoIdx-1),0) animated:YES]; 
}