UIScrollView代碼實現循環滾動

//
//  ViewController.m
//  demoScrollView
//
//  Created by kkk on 15/3/9.
//  Copyright (c) 2015年 js. All rights reserved.
//
#define WIDTH_OFF_SET 630.0

#define HEIGHT_OFF_SET 0

#define SCROLLVIEW_WIDTH 390.0

#define SCROLLVIEW_HEIGHT 80.0




#import "ViewController.h"

@interface ViewController ()
@property(strong,nonatomic)UIScrollView *scrollView;
@property(strong,nonatomic)NSMutableArray *slideImages;
@end

@implementation ViewController



@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:@"1.PNG"];
    
    [slideImages addObject:@"2.PNG"];
    
    [slideImages addObject:@"3.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];
    
    
    
    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];
        
       
        
    }
    
    //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];
    
    
    
   
    
    [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
                                 
                                 / 2) / self.scrollView.frame.size.width) + 1;
        

        if (currentPage==0)//滾到第一張圖片(其實是3/5)時,使用scrollRectToVisible:方法滾到3/5的位置

     {

            
            //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.  
    
}


@end 
發佈了2 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章