NscollectionView Lazy-loading, как поведение -- cocoa поле с участием nscollectionview пол Связанный проблема

NSCollectionView lazy-loading like behavior


5
vote

проблема

русский

Я пытаюсь получить ленивую загрузку, как поведение из моего NscollectionView. (Честно говоря, я предположил, что у него это было, как UiableView - кажется очевидным упущением?)

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

Это для исследовательского инструмента и не нужно быть красивым - то есть: вещи могут «поп».

Есть идеи? Моя первая мысль - найти некоторое время для взглядов в коллекции, чтобы узнать, когда они накращены, но наряд, похоже, называется много раз, гораздо больше раз, чем вид на экран.

Английский оригинал

I am trying to get lazy-loading like behavior from my NSCollectionView. (honestly I assumed it had it, like a UITableView - seems like an obvious omission?)

Anyway, I am displaying images in the cells, and would like to load images as they are about to scroll into view, and unload them after they leave.

This is for a research tool and does not need to be pretty - ie: stuff can "pop" in.

Any ideas? My first thought is to find some way for the Views in the collection to know when they're onscreen, but drawrect seems to be called many many times, far more times than there are views on screen.

</div
     

Список ответов

7
 
vote
vote
Лучший ответ
 
<Р> Как вы упоминаете, <код> NScollectionView строит все ячейки сразу. Особенно если есть много изображений внутри клеток, что проблемы производительности причины. Это, как я могу решить эту проблему. Там могут быть лучшие решения, но, насколько это работает нормально для меня. Долгое время я наблюдал производительность кода с инструментами и не видел стороной вниз.
 <код> enrolled0  
 

As you mention, NScollectionView builds all cells at once. Specially if there are lots of images inside cells that cause performance issues. This is how I solve the problem. There might be a better solutions but as far as this is working fine for me. For a long time I have observed performance of the code with Instruments and did not see any down side.

- (void)windowDidLoad {     //Here adding observer to NSCollectionView's scrollview to monitor bounds changes.     NSView *contentView = [scrollViewOfYourCollectionView contentView];     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(boundDidChange:) name:NSViewBoundsDidChangeNotification object:contentView]; }  - (void)boundDidChange:(NSNotification *)notification {     NSRect collectionViewVisibleRect = yourCollectionView.visibleRect;     //collectionViewVisibleRect.size.height += 300; //If you want some preloading for lower cells...      for (int i = 0; i < yourDataSourceArray.count; i++) {          NSCollectionItem *item = [yourCollectionView itemAtIndex:i];          if (NSPointInRect(NSMakePoint(item.view.frame.origin.x, item.view.frame.origin.y), collectionViewVisibleRect) == YES)          {              if (item.imageView.image == nil) {                  dispatch_async(dispatch_get_main_queue(), ^{                  //Fill your cells.                   //to showing/downloading images I am using SDWebImage.                   });              }          }     } } 
</div
 
 
         
         

Связанный проблема

3  Как приложение Mac может быть так сетчатой ​​недружелюбно  ( How can a mac app be so retina unfriendly ) 
Для моих знаний, окна, этикетки, ... и т. Д. Автоматически зафиксированы, когда они работают на новых MacBooks с Retina Displays. Это дело с большинством прил...

2  Как найти окно в определенной точке на экране для скриншота / целей записи экрана?  ( How do i find a window at a certain point on the screen for screenshot screen re ) 
Я ищу способ сделать то, что эквивалент WindowFrompoint и GetWindowrect, в углерод / какао и X11. windowfrefoint - http://msdn.microsoft .com / ru-us / биб...

0  Как я могу получить доступ к способу DetailViewController от SourceViewController; как внутри NSSPLitViewController (Objective-C)  ( How can i access a detailviewcontroller method from sourceviewcontroller both i ) 
Я новичок, чтобы объектировать - C и почувствовать, что важно учиться. Я дал себе следующую проблему: У меня установка NSSPLITViewController с двумя классам...

1  Как использовать kfseventstreameventflageVentiDSswrapped с фвевентами?  ( How to use kfseventstreameventflageventidswrapped with fsevents ) 
Я пытаюсь понять, как использовать <код> kFSEventStreamEventFlagEventIdsWrapped флаг события с <код> FSEvents . Согласно документации, флаг отправляется в ...

32  В чем разница между ns_enum и ns_options?  ( What is the difference between ns enum and ns options ) 
i предварительно назначил следующий код с помощью clang в xcode5. <код> typedef NS_ENUM(NSInteger, MyStyle) { MyStyleDefault, MyStyleCustom }; type...

69  Объективная категория, вызывающая непризнанный селектор  ( Objective c category causing unrecognized selector ) 
Мой проект имеет <код> UIImage Функция категории, которую я хочу позвонить из другого класса. Я правильно импортирую файл заголовка для категории изображений...

16  Практическая практика использовать символы Unicode или формы в приложении ?  ( Is it bad practice to use unicode symbols or shapes in a app ) 
Там было несколько раз, когда я использовал символы Unicode вместо небольших иконок в одном из моих приложений какао, либо потому, что легче нарисовать встрое...

1  Как проверить цифровую подпись XML в какао?  ( How to verify an xml digital signature in cocoa ) 
У меня есть приложение C #, которое использует цифровые подписи XML для подписания файлов лицензий. Я использовал стандартный подход Microsoft Callence здесь...

4  Как использовать NSPROGRESTINDICATOR в качестве представления NSTOOLBARITEM и имел его показать на листе настройки?  ( How do i use an nsprogressindicator as the view of an nstoolbaritem and have it ) 
У меня есть <код> NSToolbar настроен в моем приложении. Это было создано в IB. Один из элементов панели инструментов использует спиннерский стиль <код> NSPro...

1  Как изменить цвет заголовка приложения какао-приложения?  ( How do i change a cocoa applications title bar color ) 
Мне нужно изменить цвет строки заголовка приложения в ОС X. Я бы предпочтительно хотел бы, чтобы раствор с участием какао или углерода, хотя я могу сделать др...

0  Какао редактирование Nsbezierpath  ( Cocoa editing nsbezierpath ) 
У меня есть простые Bezierpath с 2 элементами в NSView; Я хочу изменить последний элемент (NSpoint) на нажатой кнопке, но мой код не имеет никакого визуальног...

29  Сравнение двух массивов  ( Comparing two arrays ) 
У меня есть два NSArrays, что я хочу сделать, это сравнить два массива, которые содержат строки, найти сходство и снова создать первый массив, но у них нет ни...

0  У NSTHOAD есть отдельная куча? Как насчет pthread (на iPhone)  ( Does nsthread have a separate heap what about pthread on iphone ) 
Если я отчужден NSTHOAD, какао запускает его в отдельной кучи памяти или зоне памяти? Например, если бы я был отсоединить нить, используйте Malloc, чтобы созд...

1  Где я могу получить полный список всех классов на основе NS (какао)?  ( Where can i obtain a complete listing of all ns based classes cocoa ) 
Где я могу получить полный список всех классов на основе NS? ...

1  Нужно, чтобы получить доступ к URL в моем одном представлении ИОС приложения с помощью веб-просмотра  ( Need to access the url in my single view ios application using web view ) 
<Р> У меня есть один вопрос относительно WebView. У меня есть URL-адрес, и нужно, чтобы запустить этот URL в WebView. и мой код здесь идет .. <код> NSLog(@"R...

Связанный проблема

3  Как приложение Mac может быть так сетчатой ​​недружелюбно 
2  Как найти окно в определенной точке на экране для скриншота / целей записи экрана? 
0  Как я могу получить доступ к способу DetailViewController от SourceViewController; как внутри NSSPLitViewController (Objective-C) 
1  Как использовать kfseventstreameventflageVentiDSswrapped с фвевентами? 
32  В чем разница между ns_enum и ns_options? 
69  Объективная категория, вызывающая непризнанный селектор 
16  Практическая практика использовать символы Unicode или формы в приложении ? 
1  Как проверить цифровую подпись XML в какао? 
4  Как использовать NSPROGRESTINDICATOR в качестве представления NSTOOLBARITEM и имел его показать на листе настройки? 
1  Как изменить цвет заголовка приложения какао-приложения? 
0  Какао редактирование Nsbezierpath 
29  Сравнение двух массивов 
0  У NSTHOAD есть отдельная куча? Как насчет pthread (на iPhone) 
1  Где я могу получить полный список всех классов на основе NS (какао)? 
1  Нужно, чтобы получить доступ к URL в моем одном представлении ИОС приложения с помощью веб-просмотра