2011-12-01 11 views
7

W ciągu ostatnich kilku dni próbowałam zaimplementować przeglądarkę zdjęć w aplikacji na iOS 5.0 w Xcode 4.2. Według projektu działa z automatycznym liczeniem odwołań (ARC). Próbowałem już Three20 Photo Viewer, ale ma to wiele zależności i jest naprawdę ciężkim elementem do uwzględnienia w moim projekcie. Następnie wypróbowałem EGOPhotoViewer, który naprawdę wydaje się być świetnym rozwiązaniem dla mojego celu - ale niestety nie obsługuję ARC i z tego powodu nie mogę skompilować go wewnątrz mojego projektu.Objective-C: przeglądarka zdjęć dla systemu iOS z obsługą ARC?

Czy ktoś zna przeglądarkę zdjęć na iOS, która obsługuje ARC - lub może w jakiś sposób zostać dodana jako biblioteka do projektu działającego z ARC?

Odpowiedz

12

Możliwe jest wyłączenie ARC dla pojedynczych plików poprzez dodanie -fno-objc-arc do pliku.

Aby wyłączyć ARC dla pliku wybierz projekt w Xcode 4, przejdź do fazach budowania kartę wybierz pliki, które chcesz wyłączyć z ARC, dodaj kompilatora flagę -fno-objc łukowego do nich akta.

+0

myślisz! To naprawdę uratowało mój dzień. – dhrm

15

Być może zechcesz rzucić okiem na MWPhotoBrowser - możesz dodać go do swojego projektu jako statyczną bibliotekę, która będzie działać niezależnie od ustawień ARC twojego projektu.

MWPhotoBrowser może wyświetlać jeden lub więcej obrazów, podając obiekty UIImage lub adresy URL do plików, obrazów internetowych lub zasobów bibliotecznych. Przeglądarka zdjęć bez problemu obsługuje pobieranie i buforowanie zdjęć z sieci. Zdjęcia można powiększać i przesuwać, a opcjonalne (z możliwością dostosowania) napisy mogą być wyświetlane. Przeglądarka może również służyć do umożliwienia użytkownikowi wybrania jednego lub więcej zdjęć przy użyciu siatki lub głównego widoku obrazu.

MWPhotoBrowser Screenshots

+0

Wygląda bardzo przydatne. Obecnie używam EGOPhotoViewer dla mojego projektu. Czy znasz zalety przeglądarki w porównaniu z EGOPhotoViewer? – dhrm

+0

Jedno; powinieneś ułatwić dodawanie obsługi wielu języków. – dhrm

+1

Dzięki! Rzuciłem okiem tylko na EGOPhotoViewer, ale myślę, że są bardzo podobne. Starałem się, aby mój był bardzo czysty, łatwy w użyciu i zoptymalizowany; zagraj, jeśli masz czas! Dzięki za sugestię wielu języków. Jest tylko kilka ciągów, które mogą być dotknięte, więc nie powinno być to trudne. Przyjrzę się temu! –

0

Oto jak to zrobiłem:

- (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]; 
} 
Powiązane problemy