Objective-C: Photo Viewer для iOS с поддержкой ARC? - PullRequest
7 голосов
/ 01 декабря 2011

Последние пару дней я пытался реализовать Photo Viewer в своем приложении iOS 5.0 в Xcode 4.2.По проекту работает с автоматическим подсчетом ссылок (ARC).Я пробовал Three20 Photo Viewer , но у него много зависимостей и он действительно тяжелый, чтобы включить его в мой проект.Затем я попробовал EGOPhotoViewer , который действительно кажется отличным решением для моих целей - но, к сожалению, я не поддерживаю ARC, и из-за этого я не могу скомпилировать его внутри своего проекта.

Кто-нибудь знает программу просмотра фотографий для iOS, которая поддерживает ARC, или ее можно каким-то образом добавить в качестве библиотеки в проект, работающий с ARC?

Ответы [ 3 ]

15 голосов
/ 04 января 2012

Возможно, вы захотите взглянуть на MWPhotoBrowser - вы можете добавить его в свой проект в качестве статической библиотеки, которая будет работать независимо от настроек ARC вашего проекта.

MWPhotoBrowser может отображать один из них.или больше изображений, предоставляя либо объекты UIImage, либо URL-адреса файлов, веб-изображений или ресурсов библиотеки.Браузер фотографий легко справляется с загрузкой и кэшированием фотографий из Интернета.Фотографии можно увеличивать и панорамировать, а также отображать необязательные (настраиваемые) подписи.Браузер также можно использовать, чтобы позволить пользователю выбрать одну или несколько фотографий с использованием сетки или основного изображения.

MWPhotoBrowser Screenshots

12 голосов
/ 01 декабря 2011

Можно отключить ARC для отдельных файлов, добавив -fno-objc-arc в файл.

Чтобы отключить ARC для файла, выберите свой проект в Xcode 4, перейдите к На вкладке фазы сборки выберите файлы, которые вы хотите отключить для ARC, добавьте к этим файлам флаг компилятора -fno-objc-arc .

0 голосов
/ 17 октября 2014

Вот как я это сделал:

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