#import "MainViewController.h"
#define WIDTH self.view.frame.size.width
#define HEIGHT self.view.frame.size.height
@interface MainViewController ()<UIScrollViewDelegate>
@property(nonatomic, retain)UIScrollView *scrollView;
@end
@implementation MainViewController
- (void)dealloc{
[_scrollView release];
[super dealloc];
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
// 創建可以播放圖片的ScrollView
self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, WIDTH, HEIGHT - 40)];
self.scrollView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"222.jpg"]];
[self.view addSubview:self.scrollView];
[_scrollView release];
self.scrollView.pagingEnabled = YES;
self.scrollView.contentSize = CGSizeMake(WIDTH * 10, HEIGHT - 40);
for (NSInteger i = 1; i < 11; i++) {
NSString *picName = [NSString stringWithFormat:@"%ld.jpg",i];
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:picName]];
imageView.frame = CGRectMake(WIDTH * (i - 1), 0, WIDTH, HEIGHT - 40);
[self.scrollView addSubview:imageView];
[imageView release];
}
self.scrollView.delegate = self;
// scrollView 的縮放,坑爹的地方:縮放之後就不能再進行滾動了/
// 設置縮放的比例
//最大縮放比例
self.scrollView.maximumZoomScale = 2;
// 最小縮放比例
self.scrollView.minimumZoomScale = 0.5;
//對它縮放的原始比例
self.scrollView.zoomScale = 1;
// 創建UIPageControl
UIPageControl *pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, HEIGHT - 40, WIDTH, 40)];
[self.view addSubview:pageControl];
pageControl.backgroundColor = [UIColor blackColor];
[pageControl release];
// 其他設置:
// 圖片個數和點的個數相同.
pageControl.numberOfPages = 10;
// 其餘圓點的顏色
pageControl.pageIndicatorTintColor = [UIColor redColor];
// 被選中點的顏色
pageControl.currentPageIndicatorTintColor = [UIColor cyanColor];
// 繼承於UIControl,所以有點擊方法.
[pageControl addTarget:self action:@selector(pageAction:) forControlEvents:UIControlEventValueChanged];
pageControl.tag = 1000;
}
// UIPageControl 的點擊方法實現
#pragma mark 讓點擊UIPageControl左右側的時候,圖片變換
- (void)pageAction:(UIPageControl *)page{
// 點從第0個開始算.
NSLog(@"%ld",page.currentPage);
// 下面這個方式書寫沒有動畫效果
//self.scrollView.contentOffset = CGPointMake(page.currentPage * WIDTH, 0);
// 有動畫效果/
[self.scrollView setContentOffset:CGPointMake(page.currentPage * WIDTH, 0) animated:YES];
}
#pragma mark 變換圖片的時候,讓點也跟着變
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
UIPageControl *page = (UIPageControl *)[self.view viewWithTag:1000];
page.currentPage = self.scrollView.contentOffset.x/WIDTH;
}
#pragma mark 專門用於縮放的協議方法的實現. 壞處是無法恢復到原來圖片大小.不建議使用.
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
return [scrollView.subviews firstObject];
}
效果如下圖, 只能在重新運行模擬器….