在UIScrollView中填充图像。 而如何懒洋洋地

那么这是我现在通常的领域,我已经pipe理了一些function,但我需要做得更好。

我正试图从相机胶卷中填充最近的图像。 我很确定有更好的方法来做到这一点。 另一件令我不安的事情是,这是

Block > loop > another block任何更好的解决scheme或简化表示赞赏。

  ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init]; [assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) { if (nil != group) { [group setAssetsFilter:[ALAssetsFilter allPhotos]]; NSLog(@"%d images found", group.numberOfAssets); for(int i = group.numberOfAssets - 5; i<group.numberOfAssets - 1; i++){ [group enumerateAssetsAtIndexes:[NSIndexSet indexSetWithIndex:i] options:0 usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) { if (nil != result) { ALAssetRepresentation *repr = [result defaultRepresentation]; UIImage *img = [UIImage imageWithCGImage:[repr fullResolutionImage]]; CGFloat aspectRatio = img.size.width/img.size.height; UIImageView *imgView = [[UIImageView alloc] init]; imgView.frame = CGRectMake(10, self.yCord, 300, 300 /aspectRatio); self.yCord += margin + (300/aspectRatio); imgView.image = img; imgView.layer.shadowRadius = 5.0; imgView.layer.shadowColor = [UIColor blackColor].CGColor; [self.scroll addSubview:imgView]; *stop = YES; self.scrollViewHeight = self.yCord + imgView.frame.size.height + margin; CGSize scrollViewSize = CGSizeMake(320, self.scrollViewHeight); [self.scroll setContentSize:scrollViewSize]; } }];} } *stop = NO; } failureBlock:^(NSError *error) { NSLog(@"error: %@", error); }]; 

另外我怎么做图像做懒加载。 我现在禁用了页面调整,并且所有的图像同时加载,这在大多数情况下是危险的。

其实你应该使用NSOperation和NSOperationQueue Class来达到这个目的,或者也可以使用GCD 。 但是,如果您查看相应类的引导参考,则会发现NSOperation and NSOperation类与GCD具有较高的灵活性。 在这里,我将给你一些参考教程,在那里你可以得到这个想法如何有效地使用这些有用的类为这样的目的。

下面是NSOperation在本教程中提到evreything的更详细的链接,我相当确定它会真的帮助你,如果你看看NSOperation和NsoperationQueue使用在做同样的任务,即下载图像或从后台高效地从相机获取图像。

这是GCD的教程。

在这里,我想告诉你,为什么我给了你这些教程的参考,因为这些教程提供了很多帮助,非常有效地实现这样的事情。

嗨,朋友试试看点forms上面,在这里我只介绍了我的经验。这取决于你如何参考。

我感到高兴,如果你从上面得到任何想法。

编辑:朋友不要忘记你的要求的最重要的部分,可能是你的类( UIScrollView )最小的内存占用。 想一想,在Camera中有这么多的图像,你真的需要获取所有的图像可能在数百个数字方面假设你要在UIImageView上显示图像。 这里你需要做的遵循Infinite ScrollView视图的概念(只创build三个mainView刷新这些mainView的数据)。 即创build只有三个主视图view1(这将被视为正确的看法),view2(将被视为中心)和View3(看起来像左边)。 您需要以这种方式编写代码,只需要这些视图来分配和添加这三个视图的所有UIImageView。您需要使用UIScrollView委托来pipe理所有这些事情。 在这里我只给出了逻辑,你必须经过它,甚至我强迫你,你应该在你的应用程序中遵循这个东西,但为了高速应用程序的缘故,你应该考虑它。 你可以通过互联网上的许多相同的逻辑线程,并可以find这个逻辑的许多教程。 如果你不能做同样的事情,请不要责怪我,在这里我给了我更好的发展的意见。

我希望你能理解我的观点。