2011-12-01 14 views
7

L'ultimo paio di giorni che ho provato ad implementare un Photo Viewer nella mia applicazione iOS 5.0 in Xcode 4.2. Per progetto è in esecuzione con Automatic Reference Counting (ARC). Ho provato Three20 Photo Viewer ma questo ha un sacco di dipendenze ed è davvero un pezzo pesante da includere nel mio progetto. Successivamente ho provato EGOPhotoViewer che sembra davvero un'ottima soluzione per il mio scopo - ma purtroppo non supporta ARC e per questo motivo, non posso compilarlo all'interno del mio progetto.Objective-C: Photo Viewer per iOS con supporto ARC?

Qualcuno conosce un Photo Viewer per iOS che supporta ARC - o potrebbe, in qualche modo, essere aggiunto come libreria a un progetto in esecuzione con ARC?

risposta

12

È possibile disabilitare ARC per singoli file aggiungendo il -fno-objc-arc a un file.

Per disattivare ARC per selezionare un file di progetto in Xcode 4 andare alle fasi di creazione scheda, selezionare i file che si desidera disabilitare per ARC, aggiungere il flag di compilazione -fno-objc-arc a questi File.

+0

si pensa! Mi ha davvero salvato la giornata. – dhrm

15

Si potrebbe dare un'occhiata a MWPhotoBrowser - è possibile aggiungerlo al progetto come una libreria statica che funzionerà indipendentemente dalle impostazioni ARC del progetto.

MWPhotoBrowser può visualizzare una o più immagini fornendo oggetti UIImage o URL per file, immagini Web o risorse della libreria. Il browser fotografico gestisce senza problemi il download e la memorizzazione nella cache delle foto dal Web. Le foto possono essere ingrandite e panoramiche e possono essere visualizzate didascalie (personalizzabili) opzionali. Il browser può anche essere utilizzato per consentire all'utente di selezionare una o più foto utilizzando la griglia o la visualizzazione dell'immagine principale.

MWPhotoBrowser Screenshots

+0

Sembra molto utile. Attualmente sto usando EGOPhotoViewer per il mio progetto. Conoscete i vantaggi del vostro browser rispetto a EGOPhotoViewer? – dhrm

+0

Una cosa; dovresti rendere più semplice l'aggiunta del supporto per più lingue. – dhrm

+1

Grazie! Ho solo dato una rapida occhiata a EGOPhotoViewer ma penso che siano abbastanza simili. Ho cercato di rendere il mio molto pulito, facile da usare e ottimizzato; giocare se hai tempo! Grazie per il suggerimento di più lingue. Ci sono solo alcune stringhe che potrebbero essere interessate, quindi non dovrebbe essere difficile. Lo esaminerò! –

0

Ecco come ho fatto:

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