滚动相册

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

        }

    }

}





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