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