最初由 pyro2927 创建。这是我对这个项目的见解。
此组件使您能够在简单的 UIView
或 UIWebView
之上显示图像画廊。滚动一下,您将看到精彩的视差效果。
安装此组件最简单的方法是通过 CocoaPods。
将以下行添加到你的 podfile
pod 'GKLParallaxPictures'
然后运行 pod install
命令,并在你打算使用此组件的位置导入 GKLParallaxPicturesViewController.h
你也可以手动安装它。只需将 GKLParallaxPicturesViewController.h
和 GKLParallaxPicturesViewController.m
拖到你的项目中,并在你打算使用此组件的位置导入 .h
文件。
GKLParallaxPicturesViewController *paralaxViewController = [[GKLParallaxPicturesViewController alloc] initWithImages:imagesArray andContentView:contentView];
其中 contentView
是你想要在你的图像下面的详细信息视图。
实例化后,你可以通过调用
[paralaxViewController addImages:moreImagesArray];
Image 数组可以包含 UIImage
的实例以及 NSString
。在后一种情况下,这些将是对图像的 URL,这些图像将异步加载。
这是我进行分支操作的原因。无法将 UIWebView
显示为 contentView
。
UIWebView *testWebView = [[UIWebView alloc] init];
[testWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://nshipster.com/"]]];
UIImage *testImage = [UIImage imageNamed:@"shovel"];
NSArray *images = @[testImage, testImage, testImage];
GKLParallaxPicturesViewController *paralaxViewController = [[GKLParallaxPicturesViewController alloc] initWithImages:images
andContentWebView:testWebView];
结果
GKLParallaxPictures 既可以接受 UIImages 也可以接受含有图像 URL 的 NSString
作为添加到顶部画廊中的 UIImageView
。默认情况下,它使用 dispatch_queue 异步加载图像,但你可以通过继承 GKLParallaxPictures 并覆盖此方法来自定义图像加载处理方式。
默认图像加载
-(void)loadImageFromURLString:(NSString*)urlString forImageView:(UIImageView*)imageView{
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
NSData *imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:urlString]];
dispatch_sync(dispatch_get_main_queue(), ^{
UIImage *downloadedImage = [[UIImage alloc] initWithData:imageData];
[imageView setImage:downloadedImage];
});
});
}