我有一个 UIScrollView
大小(320,160)。我正在添加一些 UIImageView
放入其中,大小为(213,160)。第一个UImageView
从 54 (x) 开始,依此类推,我在每个 UIImageView
之间添加了一个 5.0 的空格。 .我还启用了 pagingEnable
在 IB
& 在 coding
.我的问题是它没有按照其属性正常工作!当我滚动时,它应该会显示 UIImageViews
每单page
相反,它向我显示类似 see screenshot 的内容我想要这样的输出 see output screenshot
我哪里做错了?我还有<
的功能(上一个)& >
(下一个)那里显示图像。我昨天问了一个问题,我接受了这个问题,但是我的要求几乎没有变化,它不会成为我的解决方案。 see my question.
是否有任何我必须设置的特殊属性,或者我应该实现的一些逻辑?我检查并尝试过所有示例,但我发现我的要求有些特殊。点我!谢谢。
已编辑:
- (void) setImages
{
CGFloat contentOffset = 0.0f;
for (int i=0; i<[arrImgUrls count]; i++)
{
CGRect imageViewFrame = CGRectMake(contentOffset, 0.0f, 213, scrollImages.frame.size.height);
AsyncImageView *asyncImageView = [[AsyncImageView alloc] initWithFrame:imageViewFrame];
[asyncImageView.layer setMasksToBounds:YES];
NSString *urlImage = [arrImgUrls objectAtIndex:i];
NSURL *url = [NSURL URLWithString:urlImage];
[asyncImageView loadImageFromURL:url];
[scrollImages addSubview:asyncImageView];
contentOffset += asyncImageView.frame.size.width+increment;
[asyncImageView release];
}
scrollImages.contentSize = CGSizeMake([arrImgUrls count] * scrollImages.frame.size.width, scrollImages.frame.size.height);
scrollImages.pagingEnabled = YES;
scrollImages.clipsToBounds = NO;
}
-(IBAction)prevImage:(id)sender
{
_currentImage--;
[btnNext setEnabled:YES];
if (_currentImage==0)
{
[btnPrev setEnabled:NO];
[scrollImages setContentOffset:CGPointMake((_currentImage*imageWidth), 0) animated:YES];
return;
}
NSLog(@"previous:mult %d inc %d current %d",_currentImage*imageWidth,increment*_currentImage,_currentImage);
int nextImage=_currentImage+2;
[scrollImages setContentOffset:CGPointMake((((_currentImage*imageWidth)-(increment*_currentImage)))+(nextImage*increment), 0) animated:YES];
}
-(IBAction)nextImage:(id)sender
{
_currentImage++;
NSLog(@"next:mult %d inc %d current %d",_currentImage*imageWidth,increment*_currentImage,_currentImage);
[scrollImages setContentOffset:CGPointMake((_currentImage*imageWidth)+(increment*_currentImage), 0) animated:YES];
[btnPrev setEnabled:YES];
if (_imageCount-1 == _currentImage)
{
[btnNext setEnabled:NO];
}
}
最佳答案
分页 ScrollView 始终分页其框架大小的倍数。所以在你的例子中分页总是+320。
如果您的内容部分与 ScrollView 的框架匹配,则此行为很好。
您需要做的是,将 ScrollView 的宽度设置为 213,并将其 clipsToBounds
属性设置为 NO
。
之后,您的 ScrollView 将按照您想要的方式进行翻页,并且您可以看到框架外的左侧和右侧内容。
此外,你必须做一个技巧来让这个左右区域委托(delegate)触摸到 ScrollView 。
在 this answer 中有很好的解释.
关于iphone - iOS : How to do proper paging in UIScrollView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12740425/