[英]iOS : How to do proper paging in UIScrollView?
我有一個大小為(320,160)的UIScrollView
。 我向其中添加了大小為(213,160)的UIImageView
。 第一個UImageView
從54(x)開始,依此類推,我在每個UIImageView
之間添加了5.0的空間。 我還啟用了IB
和coding
pagingEnable
。 我的問題是它的屬性無法正常工作! 當我滾動時,它應該在每個page
向我顯示UIImageViews
,而不是向我顯示類似的屏幕截圖,我想輸出類似這樣的內容, 請參見輸出屏幕截圖
我在哪里做錯了? 我還具有<
(上一個)& >
(下一個)在那里顯示圖像的功能。 昨天我問了一個問題,這是我接受的,但是我的要求幾乎沒有變化,並且它不會成為我的解決方案。 看我的問題。
我是否需要設置任何特殊屬性,或者應該實現一些邏輯? 我檢查並嘗試了所有示例,但我發現我的要求有些特殊。 指點我! 謝謝。
編輯:
- (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];
}
}
分頁滾動視圖始終是其幀大小的頁面倍數。 因此,在您的示例中,分頁始終為+320。
如果您的內容部分與滾動視圖的框架匹配,則此行為是好的。
您需要做的是為滾動視圖提供213的寬度,並將其clipsToBounds
屬性設置為NO
。 之后,您的滾動視圖將准確顯示您想要的頁面,並且您可以查看框架外部的內容。 此外,您還必須技巧一下,使左右區域的代表觸摸到滾動視圖。
這個答案對此做了很大的解釋。
您忘記設置scrollview內容大小。
確保已將內容大小設置為適合N個圖像。
如果要使用scrollview滾動查看10張圖像,並在每頁上放置一個圖像,則將scrollView contentSize
設置為
[scrollView setContentSize:CGSizeMake(320 * 10,200)];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.