簡體   English   中英

iOS:如何在UIScrollView中進行正確的分頁?

[英]iOS : How to do proper paging in UIScrollView?

我有一個大小為(320,160)的UIScrollView 我向其中添加了大小為(213,160)的UIImageView 第一個UImageView從54(x)開始,依此類推,我在每個UIImageView之間添加了5.0的空間。 我還啟用了IBcoding 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM