#import <UIKit/UIKit.h>
@interface MainViewController :UIViewController<UIScrollViewDelegate>
{
//設置滾動視圖和page的屬性,爲了在方法中可以調用
UIScrollView * _scroll;
UIPageControl * _page;
}
@end
//控制器.m
@implementation MainViewController
-(void)dealloc
{
[superdealloc];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [superinitWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[superviewDidLoad];
// Do any additional setup after loading the view.
//建立滾動視圖
_scroll = [[UIScrollViewalloc]initWithFrame:CGRectMake(0,50, 320, 300)];
[_scrollsetBackgroundColor:[UIColorblackColor]];
//移動的大小
[_scrollsetContentSize:CGSizeMake(320*12,300)];
//從哪一張開始顯示,就是一運行,顯示哪一張,320,顯示第二張
[_scrollsetContentOffset:CGPointMake(320,0)];
//是否按照頁翻動
[_scrollsetPagingEnabled:YES];
//設置代理人
_scroll.delegate =self;
//滾動條消失 左右
[_scrollsetShowsHorizontalScrollIndicator:NO];
//上下
// [_scroll setShowsVerticalScrollIndicator:NO];
//第一張和最後一張時,不會再拖動
[_scrollsetBounces:NO];
[self.viewaddSubview:_scroll];
[_scrollrelease];
//在大得滾動視圖內添加小的滾動視圖,小的滾動視圖內添加一張照片,是爲了不影響放大縮小
for (int i =1; i < 13; i++) {
//建立添加的小視圖
UIScrollView * scroll1 = [[UIScrollViewalloc]initWithFrame:CGRectMake(320*(i-1),0, 320, 300)];
NSString * name = [NSStringstringWithFormat:@"%d.jpg",i];
UIImageView * image = [[UIImageViewalloc]initWithImage:[UIImageimageNamed:name]];
[imagesetFrame:CGRectMake(0,0, 320, 300)];
[scroll1addSubview:image];
//設置放大的大小倍數
[scroll1setMaximumZoomScale:2.0f];
[scroll1setMinimumZoomScale:0.5f];
//設置代理人
scroll1.delegate =self;
[_scrolladdSubview:scroll1];
[imagerelease];
[scroll1release];
}
//
_page = [[UIPageControlalloc]initWithFrame:CGRectMake(0,370, 320, 40)];
[_pagesetBackgroundColor:[UIColorgrayColor]];
_page.alpha =0.3;
//圓點的個數 也就是頁數
[_pagesetNumberOfPages:10];
//設置事件
[_pageaddTarget:selfaction:@selector(pageAction:)forControlEvents:UIControlEventValueChanged];
//圓點的顏色
[_pagesetPageIndicatorTintColor:[UIColorblueColor]];
//現在的圓點的顏色
[_pagesetCurrentPageIndicatorTintColor:[UIColoryellowColor]];
[self.viewaddSubview:_page];
[_pagerelease];
}
//設置12張照片,第一張照片和倒數第二張一樣,第二張和倒數第一張一樣,這是爲了翻轉照片時,不產生瞬間移動
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
//讓圓點隨着圖片滾動
// [_page setCurrentPage:_scroll.contentOffset.x/320];
if (_scroll.contentOffset.x ==320*11 ) {
//當圖片轉到倒數第二張時,改變座標到第二張
[_scrollsetContentOffset:CGPointMake(320,0)];
//此時page值爲0
_page.currentPage =0;
}elseif(_scroll.contentOffset.x ==0 ){
//當圖片轉到第一張時,座標轉到倒數第二張
[_scrollsetContentOffset:CGPointMake(320*10,0)];
//此時page值爲10
_page.currentPage =10;
}else{
//因爲第一張顯示的爲第二張圖片,所以page值要減去320,再除以320
_page.currentPage = (_scroll.contentOffset.x-320) /320;
}
}
-(void)pageAction:(id)sender
{
UIPageControl * page =(UIPageControl *)sender;
//讓圖片隨着圓點滾動
[_scrollsetContentOffset:CGPointMake(page.currentPage *320 + 320, 0)];
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
//求滾動視圖的子視圖
NSArray * array = [scrollView subviews];
//放大的哪一張
return [array objectAtIndex:0];
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
//視圖放大還原
for (UIScrollView * scroll in [scrollView subviews]) {
if ([scroll isKindOfClass:[UIScrollView class]]) {
[scroll setZoomScale:1.0f];
}
}
}