用UIScrollView和UIPageControl简单模拟相册功能

来源:互联网 发布:我爱你用网络语言表达 编辑:程序博客网 时间:2024/04/28 01:29

用一个大的UIScrollView里放一些小的UIScrollView,小的UIScrollView里面放UIImageView来显示图片,切换图片的时候通过UIPageControl来显示的图片的位置,通过切换页也可以切换图片

1.UIScrollView

用到的属性

@property(nonatomic)        CGPoint                      contentOffset;                 // default CGPointZero  偏移

@property(nonatomic)        CGSize                       contentSize;                   // default CGSizeZero    可以滚动的区域

@property(nonatomic)        BOOL                         bounces;                       // default YES. if YES, bounces past edge of content and back again  到边缘之后是否可以拖动

@property(nonatomic,assign)id<UIScrollViewDelegate>      delegate;                      // default nil. weak reference   协议代理

用到的代理方法

- (void)scrollViewDidScroll:(UIScrollView *)scrollView;                                              // any offset changes 滚动发生

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;    // return a view that will be scaled. if delegate returns nil, nothing happens 得到正在放大的视图

2,UIPageControl

用到的属性

@property(nonatomic)NSInteger numberOfPages;         // default is 0 页数

@property(nonatomic)NSInteger currentPage;           // default is 0. value pinned to 0..numberOfPages-1 当前页

3.简单实现

.h中添加两个属性或成员

{

    UIScrollView *_scrollView;

    UIPageControl *_pageControl;


}

.m中

- (void)viewDidLoad

{

    [superviewDidLoad];

// Do any additional setup after loading the view.

    _scrollView=[[UIScrollViewalloc]initWithFrame:CGRectMake(0,20,320,180)];

    [_scrollViewsetBackgroundColor:[UIColorgrayColor]];

    [_scrollViewsetMaximumZoomScale:4.0f];//放大比例

    [_scrollViewsetMinimumZoomScale:0.1f];//缩小比例

    [_scrollViewsetShowsVerticalScrollIndicator:false];//隐藏滑动指示器

    [_scrollViewsetBounces:NO];//到边缘之后是否可以持续拉动的效果

    [_scrollViewsetContentSize:CGSizeMake(2880   ,0)];//大小

    _scrollView.delegate=self;//设置代理人

    [_scrollViewsetPagingEnabled:YES];//每次拖动,总是拖到新一页

    [_scrollViewsetContentOffset:CGPointMake(640,0)];

    //添加图片

    for (int i=1; i<10; i++) {

        UIScrollView *scrollView=[[UIScrollViewalloc]initWithFrame:CGRectMake(i*320-320,0,320,180)];

        //创建子滚动视图

        NSString *str=[NSStringstringWithFormat:@"%d.jpg",i];

        UIImageView *imageView=[[UIImageViewalloc]initWithImage:[UIImageimageNamed:str]];

        //创建imageView添加到子滚动视图

        [imageView setFrame:CGRectMake(0,0,320,180)];

        [scrollView addSubview:imageView];

        [imageView release];

        scrollView.delegate=self;//给子滚动视图添加代理

        [scrollView setMaximumZoomScale:1.5f];

        [scrollView setMinimumZoomScale:0.1f];

        [_scrollView addSubview:scrollView];//子滚动视图添加到大的滚动视图上面

        [scrollView release];

    }

    //添加页控制

    _pageControl=[[UIPageControlalloc]initWithFrame:CGRectMake(0,240,320,40 )];

    [_pageControlsetBackgroundColor:[UIColorgrayColor]];

    [_pageControladdTarget:selfaction:@selector(pageControlAction:)forControlEvents:UIControlEventValueChanged];

    [_pageControlsetNumberOfPages:9];

    [_pageControlsetPageIndicatorTintColor:[UIColorredColor]];

    [self.viewaddSubview:_pageControl];

    [_pageControl release];

    [self.viewaddSubview:_scrollView];

    [_scrollView release];

}


//得到当前要放大的视图

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

{

    NSArray *viewArr=[scrollView subviews];//得到子视图

    return    [viewArr objectAtIndex:0];

}


//页切换动作,换到下一张图片

-(void)pageControlAction:(id)sender

{

    

    if ([sender isKindOfClass:[UIPageControlclass]]) {

        UIPageControl *pagecontrol=(UIPageControl *)sender;

        NSLog(@"%d",pagecontrol.currentPage);

        //每次切换到下一张的时候,让它显示原来的比例

        UIScrollView *scrollView=[[_scrollViewsubviews]objectAtIndex:pagecontrol.currentPage];

        [scrollView setZoomScale:1.0];

        [_scrollView setContentOffset:CGPointMake(320*pagecontrol.currentPage,0 )];

        

    }

    

}


//滚动动作发生

-(void)scrollViewDidScroll:(UIScrollView *)scrollView

{

    NSLog(@"滚动发生");

    NSLog(@"content offset=%@",NSStringFromCGPoint(scrollView.contentOffset));

    int page=scrollView.contentOffset.x/320;

    [_pageControlsetCurrentPage:page];

    NSLog(@"page=%d",page);

}

效果图





0 0
原创粉丝点击