IOS开发之UIScrollView与UIPageControl的用法

jopen 11年前

@interface RootViewController : UIViewController<UIScrollViewDelegate>    {        UIScrollView *_scrollView;        NSMutableArray *slideImages;        UIPageControl *_page;    }      @end      #import "RootViewController.h"      @interface RootViewController ()      @end      @implementation RootViewController      - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil    {        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];        if (self) {            // Custom initialization        }        return self;    }      - (void)viewDidLoad    {        [super viewDidLoad];                _scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 20, 320, 240)];        _scrollView.bounces = NO;        _scrollView.pagingEnabled = YES;        _scrollView.delegate = self;        _scrollView.contentOffset = CGPointMake(320, 0);        _scrollView.contentSize = CGSizeMake(1920,240);        _scrollView.showsVerticalScrollIndicator =NO;        _scrollView.showsHorizontalScrollIndicator = NO;        _scrollView.userInteractionEnabled = YES;        [self.view addSubview:_scrollView];        [_scrollView release];                slideImages = [[NSMutableArray alloc]initWithObjects:@"1.jpeg",@"2.jpg",@"3.jpeg",@"4.jpeg", nil];                UIImageView *imageView = [[UIImageView alloc]                                  initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:([slideImages count]-1)]]];        imageView.frame = CGRectMake(0, 0, 320, 240);        [_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(320*i+320, 0, 320, 240);            imageView.userInteractionEnabled = YES;            [_scrollView addSubview:imageView];            [imageView release];        }                imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:0]]];        imageView.frame = CGRectMake(320*5, 0, 320, 240);        [_scrollView addSubview:imageView];                [imageView release];                        _page = [[UIPageControl alloc]initWithFrame:CGRectMake(240, 230, 70, 30)];        _page.numberOfPages = 4;        _page.currentPage = 0;            //    _page.backgroundColor = [UIColor grayColor];        [_page addTarget:self action:@selector(pageAction) forControlEvents:UIControlEventTouchUpInside];        [self.view addSubview:_page];        [_page release];    // Do any additional setup after loading the view.    }        - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView    {        int currentPage = (_scrollView.contentOffset.x - _scrollView.frame.size.width                                 / ([slideImages count]+2)) / _scrollView.frame.size.width + 1;        NSLog(@"%d",currentPage);        if (currentPage==0) {            [_scrollView scrollRectToVisible:CGRectMake(320*4, 0, 320, 240) animated:NO];        }        else if (currentPage==([slideImages count]+1)) {                //如果是最后+1,也就是要开始循环的第一个                [_scrollView scrollRectToVisible:CGRectMake(320, 0, 320, 240) animated:NO];            }    }      - (void)scrollViewDidScroll:(UIScrollView *)sender    {        int page = _scrollView.contentOffset.x/320-1;        _page.currentPage = page;    }      -(void)pageAction    {        int page = _page.currentPage;        [_scrollView setContentOffset:CGPointMake(320 * (page+1), 0)];    }      - (void)didReceiveMemoryWarning    {        [super didReceiveMemoryWarning];        // Dispose of any resources that can be recreated.    }      - (void)dealloc {                [slideImages release];        [super dealloc];    }      @end