UIScrollView代码实现循环滚动

iPhone开发应用中循环滚动一个UIScrollView代码实现是本文要介绍的内容,主要是介绍UIScrollView来实现循环滚动的案例,来看详细内容。

//  testScrollViewViewController.m  

//  testScrollView  

//  Created by cash on 11-7-4.  

//  Copyright 2011年 xbiii3s@gmail.com. All rights reserved.   

#import "testScrollViewViewController.h"  

@implementation testScrollViewViewController   

@synthesize scrollView, slideImages;  

#define WIDTH_OF_SCROLL_PAGE 320  

#define HEIGHT_OF_SCROLL_PAGE 460  

#define WIDTH_OF_IMAGE 320 #define HEIGHT_OF_IMAGE 460  

#define LEFT_EDGE_OFSET 0   

- (void)viewDidLoad {      

    scrollView = [[UIScrollView alloc] init];  

    CGRect scrollFrame;  

    scrollFrame.origin.x = 0;       

    scrollFrame.origin.y = 0;        

    scrollFrame.size.width = WIDTH_OF_SCROLL_PAGE;      

    scrollFrame.size.height = HEIGHT_OF_SCROLL_PAGE;      

    scrollView = [[UIScrollView alloc] initWithFrame:scrollFrame];      

    scrollView.bounces = YES;       

    scrollView.pagingEnabled = YES;       

    scrollView.delegate = self;       

    scrollView.userInteractionEnabled = YES;       

    slideImages = [[NSMutableArray alloc] init];      

    [slideImages addObject:@"IMG_0116.PNG"];      

    [slideImages addObject:@"IMG_0118.PNG"];      

    [slideImages addObject:@"IMG_0119.PNG"];      

    [slideImages addObject:@"main_bg.png"];      

     //add the last image first       

     UIImageView *imageView = [[UIImageView alloc]  

     initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:([slideImages count]-1)]]]       

     imageView.frame = CGRectMake(LEFT_EDGE_OFSET, 0, WIDTH_OF_IMAGE, HEIGHT_OF_IMAGE);      

     [scrollView addSubview:imageView];      

     [imageView release];     

     for (int i = 0;i<[slideImages count];i++) {   

            //loop this bit          

            UIImageView *imageView = [[UIImageView alloc]  

            initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:i]]];          

            imageView.frame = CGRectMake((WIDTH_OF_IMAGE * i) + LEFT_EDGE_OFSET + 320, 0, WIDTH_OF_IMAGE, HEIGHT_OF_IMAGE);          

            [scrollView addSubview:imageView];          

            [imageView release];  

      }      

       //add the first image at the end      

       imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:0]]];      

       imageView.frame = CGRectMake((WIDTH_OF_IMAGE * ([slideImages count] + 1)) + LEFT_EDGE_OFSET, 0, WIDTH_OF_IMAGE, HEIGHT_OF_IMAGE);  

        [scrollView addSubview:imageView];     

 

        [imageView release];      

        [scrollView setContentSize:CGSizeMake(WIDTH_OF_SCROLL_PAGE * ([slideImages count] + 2), HEIGHT_OF_IMAGE)];     

         [scrollView setContentOffset:CGPointMake(0, 0)];      

         [self.view addSubview:scrollView];     

          [self.scrollView scrollRectToVisible:CGRectMake(WIDTH_OF_IMAGE,0,WIDTH_OF_IMAGE,HEIGHT_OF_IMAGE) animated:NO];       

          [super viewDidLoad];} - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {   

      int currentPage = floor((self.scrollView.contentOffset.x - self.scrollView.frame.size.width 

                             / ([slideImages count]+2)) / self.scrollView.frame.size.width) + 1;     

       if (currentPage==0) {    

              //go last but 1 page          

   [self.scrollView scrollRectToVisible:CGRectMake(WIDTH_OF_IMAGE * [slideImages count],0,WIDTH_OF_IMAGE,HEIGHT_OF_IMAGE) animated:NO];  

 } else  

 if (currentPage==([slideImages count]+1)) {  

 //如果是最后+1,也就是要开始循环的第一个          

 [self.scrollView scrollRectToVisible:CGRectMake(WIDTH_OF_IMAGE,0,WIDTH_OF_IMAGE,HEIGHT_OF_IMAGE) animated:NO];  

}   

}   

- (void)didReceiveMemoryWarning {    

  // Releases the view if it doesn't have a superview.      

  [super didReceiveMemoryWarning];      

  // Release any cached data, images, etc that aren't in use.  

  }  

 - (void)viewDidUnload {    

   // Release any retained subviews of the main view.     

    // e.g. self.myOutlet = nil;  

 }   

 - (void)dealloc {     

  [scrollView release];      

  [slideImages release];      

  [super dealloc]; 

}  

@end 

原文地址:https://www.cnblogs.com/hopeanCom/p/2781876.html