iOS UIPageControl簡單範例
關于自動 滾動代碼 有待補充
執行個體中的圖檔自行添加
.h 檔案代碼
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController<UIScrollViewDelegate>
{
UIScrollView *_scrollView;
NSMutableArray *slideImages;
UIPageControl *_page;
}
@end
.m 檔案代碼
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (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];
slideImages = [[NSMutableArray alloc]initWithObjects:@"1.png",@"2.png",@"3.png",@"4.png", nil];
UIImageView *imageView = [[UIImageView alloc]
initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:([slideImages count]-1)]]];
imageView.frame = CGRectMake(0, 0, 320, 240);
[_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(320*i+320, 0, 320, 240);
imageView.userInteractionEnabled = YES;
[_scrollView addSubview:imageView];
}
imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:0]]];
imageView.frame = CGRectMake(320*5, 0, 320, 240);
[_scrollView addSubview:imageView];
_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];
// 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.
}
@end