滾動相冊

#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];

        }

    }

}





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章