我将AsyncImageView
添加到UIScrollView
以从网络加载图片,其工作正常,我添加了8张图片。问题属于paging
我已启用pagingEnable
到YES
,但它不会按我的意愿发送,我正在尝试将contentOffset
设置为x
center
1}}但它不会有任何影响。我希望当我滚动或选择UIScrollView
或next
选项时,每个图片都应该在previous
的{{1}}内。
这是我将图片添加到UIScrollView
arrImgUrls是一个NSArray
_currentImage,_imageCount是整数
-(void)setImagesToScrollView
{
[btnPrev setEnabled:NO];
_currentImage = 0;
_imageCount = [arrImgUrls count];
int x=20;
int y=0;
int w=213;
int h=160;
for (int i=0; i<[arrImgUrls count]; i++)
{
AsyncImageView *asyncImageView = [[AsyncImageView alloc] initWithFrame:CGRectMake(x, y, w, h)];
[asyncImageView setDelegate:self];
[asyncImageView.layer setMasksToBounds:YES];
NSString *urlImage = [arrImgUrls objectAtIndex:i];
NSURL *url = [NSURL URLWithString:urlImage];
[asyncImageView loadImageFromURL:url];
[asyncImageView release];
[scrollImages addSubview:asyncImageView];
x=(x+w)+10;
}
scrollImages.contentSize=CGSizeMake(x, scrollImages.frame.size.height);
}
这是我用来在previous
中展示next
或UIScrollView
张图片的代码。
-(IBAction)prevImage:(id)sender
{
_currentImage--;
[btnNext setEnabled:YES];
if (_currentImage<=0)
{
_currentImage = 0;
[btnPrev setEnabled:NO];
}
[scrollImages setContentOffset:CGPointMake((_currentImage*imageWidth)+10, 0) animated:NO];
}
-(IBAction)nextImage:(id)sender
{
_currentImage++;
[btnPrev setEnabled:YES];
if (_imageCount-1 == _currentImage)
{
[btnNext setEnabled:NO];
}
[scrollImages setContentOffset:CGPointMake(_currentImage*imageWidth, 0) animated:NO];
}
加载并添加到UIScrollView
唯一问题的所有图片都是在用户center
或scrolls
或previous
时在next
显示。
请指出我在哪里做错了?
谢谢!
答案 0 :(得分:3)
首先确保_currentImage
是否正确维护?
现在尝试关注下一张图片
CGRect frame;
frame.origin.x = (imageWidth * _currentImage) +10;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;
[self.scrollView scrollRectToVisible:frame animated:YES]; // NO if you don't want animation
而不是这一行
[scrollImages setContentOffset:CGPointMake(_currentImage*imageWidth+10, 0) animated:NO];
&安培;对于上一张图片
CGRect frame;
frame.origin.x = (imageWidth * _currentImage) - 10;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;
[self.scrollView scrollRectToVisible:frame animated:YES]; // NO if you don't want animation
这里有一个很好的例子就像你想要的那样
答案 1 :(得分:0)
问题在于您为AsyncImageView设置的框架。您必须熟悉分页的工作原理。它检查你已经分配到scrollview&amp;的rect。它滚动到滚动视图的中心,因此您可能会看到图像朝左侧或右侧放置而不是对齐中心。尝试将帧AsyncImageView设置为x = 0&amp; width = 320&amp;看看scrollview的行为。