IOS开发之UIScrollView与UIPageControl的用法

分享到:
@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

昵    称:
验证码:

相关文档: