从 ALAssetLibrary 为启用分页的 UIScrollView 添加多个 UIImages
Posted
技术标签:
【中文标题】从 ALAssetLibrary 为启用分页的 UIScrollView 添加多个 UIImages【英文标题】:Adding multiple UIImages for Paging Enabled UIScrollView from ALAssetLibrary 【发布时间】:2015-08-20 10:26:53 【问题描述】:从 ALAssetLibrary 获取图像后,我在显示图像时遇到问题。我的问题是,如果有一个图像,那么它会很好,但如果有多个图像,那么最后一个图像只会出现,而不是之前的图像。我发现循环中存在问题,找不到是否。
如果有人解决了这个问题,请告诉我。
mainScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 70, self.view.frame.size.width, self.view.frame.size.height)];
mainScrollView.pagingEnabled = YES;
mainScrollView.delegate=self;
mainScrollView.showsHorizontalScrollIndicator = NO;
mainScrollView.showsVerticalScrollIndicator = NO;
CGRect innerScrollFrame = mainScrollView.bounds;
for (NSInteger i = 0; i < images.count; i++)
imageForZooming=[[UIImageView alloc]init];
if ([maincheck isEqualToString:@"YES"])
NSURL*url=[NSURL URLWithString:[images objectAtIndex:i]];
[library assetForURL:url resultBlock:^(ALAsset *asset)
UIImage *copyOfOriginalImage = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullResolutionImage]];
[imageForZooming setImage:copyOfOriginalImage];
failureBlock:^(NSError *error)
NSLog(@"the error is %@",error);
];
else
[imageForZooming setImageWithURL:[NSURL URLWithString:[images objectAtIndex:i]]];
UITapGestureRecognizer*t=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(showblack:)];
t.numberOfTapsRequired=1;
imageForZooming.userInteractionEnabled=YES;
[imageForZooming addGestureRecognizer:t];
imageForZooming.frame=CGRectMake(0, 50, 320, 200);
imageForZooming.contentMode=UIViewContentModeScaleAspectFit;
imageForZooming.tag = VIEW_FOR_ZOOM_TAG;
pageScrollView = [[UIScrollView alloc] initWithFrame:innerScrollFrame];
pageScrollView.minimumZoomScale = 1.0f;
pageScrollView.maximumZoomScale = 4.5f;
pageScrollView.zoomScale = 1.0f;
pageScrollView.contentSize = imageForZooming.bounds.size;
pageScrollView.delegate = self;
pageScrollView.showsHorizontalScrollIndicator = NO;
pageScrollView.showsVerticalScrollIndicator = NO;
[pageScrollView addSubview:imageForZooming];
[mainScrollView addSubview:pageScrollView];
if (i < images.count-1)
innerScrollFrame.origin.x += innerScrollFrame.size.width;
mainScrollView.contentSize = CGSizeMake(innerScrollFrame.origin.x + innerScrollFrame.size.width,mainScrollView.bounds.size.height);
[self.view addSubview:mainScrollView];
【问题讨论】:
【参考方案1】:这里你没有设置滚动视图的内容大小。
[scrollView setContentSize:CGSizeMake(numberOfImages * scrollView.frame.size.width, scrollView.frame.size.width)];
在添加到 scrollView 之前,您还必须更改每个 imageView 的 X 偏移量(如果是水平滚动)。
另外,您没有在此处将 imageForZooming 添加到任何滚动视图。
查看here 以从 ALAssetLibrary 加载图像。
【讨论】:
我设置了 Scrollview 的 contentSize,它适用于 Scroll View 的宽度,但图像没有出现在上面。使用 ALAssetLibrary 代码时唯一的问题。Else 条件适用于多个图像.但不是与 ASSetLibrary 条件。 请检查编辑后的代码,让我知道是什么问题。 您是说“如果您使用 ALAssetLibrary 并且所有图像都在其他条件下显示,则仅显示最后一张图像?” 我发现 ALAssetLybrary 正在异步工作,似乎这里缺少一些东西,无法将图像正确添加到 imageforZooming 对象。 是的,我的问题就是你所说的。以上是关于从 ALAssetLibrary 为启用分页的 UIScrollView 添加多个 UIImages的主要内容,如果未能解决你的问题,请参考以下文章
在启用本机分页的情况下查看 UICollectionView 中的上一个/下一个单元格?