iOS入门(三十一)UIScrollView

本文介绍如何使用 UIScrollView 实现类似相册的图片翻页效果,包括页面控制器 UIPageControl 的联动显示,以及 UIScrollView 的关键属性设置,如 contentSize、pagingEnabled 和 zoomScale 等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UIScrollView  
相册

    UIPageControl * _page;

    UIScrollView * _scroview;



    contentSize //定义内容区域⼤大⼩小,决定是否能够滑动

    contentOffset //屏幕左上⾓角距离坐标原点的偏移量

    scrollsToTop //滑动到顶部(点状态条的时候)

    pagingEnabled //是否整屏翻动

    bounces //边界是否回弹

    scrollEnabled //判断控件是否能够滚动

    showsHorizontalScrollIndicator //控制是否显⽰示⽔水平⽅方向的滚动条

    showVerticalScrollIndicator//控制是否显⽰示垂直⽅方向的滚动条

    alwaysBounceVertical//控制垂直⽅方向遇到边框是否反弹

    alwaysBounceHorizontal//控制⽔水平⽅方向遇到边框是否反弹

 

    minimumZoomScale // 缩⼩小的最⼩小⽐比例

    maximumZoomScale //放⼤大的最⼤大⽐比例

    zoomScale//设置变化⽐比例

    zooming//判断是否正在进⾏行缩放反弹

    bouncesZoom//控制缩放的时候是否会反弹

 




 

@interface RootViewController ()

{

    UIPageControl * _page;

    UIScrollView * _scroview;

}


@end


@implementation RootViewController


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {

        // Custom initialization

    }

    return self;

}


- (void)viewDidLoad

{

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    _scroview = [[UIScrollView alloc]initWithFrame:CGRectMake(10, 20, 300, 400)];

    [self.view addSubview:_scroview];

    [_scroview release];

    [_scroview setBackgroundColor:[UIColor yellowColor]];

    _scroview.contentSize CGSizeMake(1500, 2000);

    UIImageView * aimage = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 300, 400)];

    [aimage setImage:[UIImage imageNamed:@"78.jpg"]];

    [_scroview addSubview:aimage];

    [aimage release];

    aimage.tag 200;

    UIImageView * bimage = [[UIImageView alloc]initWithFrame:CGRectMake(300, 400, 300, 400)];

    [bimage setImage:[UIImage imageNamed:@"88.jpg"]];

    [_scroview addSubview:bimage];

    [bimage release];

    UIImageView * cimage = [[UIImageView alloc]initWithFrame:CGRectMake(600,800, 300, 400)];

    [cimage setImage:[UIImage imageNamed:@"90.jpg"]];

    [_scroview addSubview:cimage];

    [cimage release];

    UIImageView * dimage = [[UIImageView alloc]initWithFrame:CGRectMake(900, 1200, 300, 400)];

    [dimage setImage:[UIImage imageNamed:@"33.jpg"]];

    [_scroview addSubview:dimage];

    [dimage release];

    UIImageView * eimage = [[UIImageView alloc]initWithFrame:CGRectMake(1200, 1600, 300, 400)];

    [eimage setImage:[UIImage imageNamed:@"74.jpg"]];

    [_scroview addSubview:eimage];

    [eimage release];

    UIImageView * fimage = [[UIImageView alloc]initWithFrame:CGRectMake(1200, 0, 300, 400)];

    [fimage setImage:[UIImage imageNamed:@"788.jpg"]];

    [_scroview addSubview:fimage];

    [fimage release];

    UIImageView * gimage = [[UIImageView alloc]initWithFrame:CGRectMake(0, 1600, 300, 400)];

    [gimage setImage:[UIImage imageNamed:@"65.jpg"]];

    [_scroview addSubview:gimage];

    [gimage release];

    UIImageView * himage = [[UIImageView alloc]initWithFrame:CGRectMake(900, 400,300, 400)];

    [himage setImage:[UIImage imageNamed:@"61.jpg"]];

    [_scroview addSubview:himage];

    [himage release];

    UIImageView * iimage = [[UIImageView alloc]initWithFrame:CGRectMake(300, 1200, 300, 400)];

    [iimage setImage:[UIImage imageNamed:@"83.jpg"]];

    [_scroview addSubview:iimage];

    [iimage release];

    UIImageView * jimage = [[UIImageView alloc]initWithFrame:CGRectMake(300, 0, 300, 400)];

    [jimage setImage:[UIImage imageNamed:@"44.jpg"]];

    [_scroview addSubview:jimage];

    [jimage release];

    UIImageView * kimage = [[UIImageView alloc]initWithFrame:CGRectMake(600, 400, 300, 400)];

    [kimage setImage:[UIImage imageNamed:@"13.jpg"]];

    [_scroview addSubview:kimage];

    [kimage release];

    UIImageView * limage = [[UIImageView alloc]initWithFrame:CGRectMake(300, 800, 300, 400)];

    [limage setImage:[UIImage imageNamed:@"6.jpg"]];

    [_scroview addSubview:limage];

    [limage release];

    UIImageView * mimage = [[UIImageView alloc]initWithFrame:CGRectMake(600, 1200, 300, 400)];

    [mimage setImage:[UIImage imageNamed:@"39.jpg"]];

    [_scroview addSubview:mimage];

    [mimage release];

    UIImageView * nimage = [[UIImageView alloc]initWithFrame:CGRectMake(900, 800, 300, 400)];

    [nimage setImage:[UIImage imageNamed:@"15.jpg"]];

    [_scroview addSubview:nimage];

    [nimage release];

    UIImageView * oimage = [[UIImageView alloc]initWithFrame:CGRectMake(600, 0,300, 400)];

    [oimage setImage:[UIImage imageNamed:@"91.jpg"]];

    [_scroview addSubview:oimage];

    [oimage release];

    UIImageView * pimage = [[UIImageView alloc]initWithFrame:CGRectMake(900, 0, 300, 400)];

    [pimage setImage:[UIImage imageNamed:@"85.jpg"]];

    [_scroview addSubview:pimage];

    [pimage release];

    UIImageView * qimage = [[UIImageView alloc]initWithFrame:CGRectMake(0, 400, 300, 400)];

    [qimage setImage:[UIImage imageNamed:@"71.jpg"]];

    [_scroview addSubview:qimage];

    [qimage release];

    UIImageView * rimage = [[UIImageView alloc]initWithFrame:CGRectMake(0, 800, 300, 400)];

    [rimage setImage:[UIImage imageNamed:@"75.jpg"]];

    [_scroview addSubview:rimage];

    [rimage release];

    UIImageView * siamge = [[UIImageView alloc]initWithFrame:CGRectMake(0, 1200, 300, 400)];

    [siamge setImage:[UIImage imageNamed:@"5.jpg"]];

    [_scroview addSubview:siamge];

    [siamge release];

    UIImageView * timage = [[UIImageView alloc]initWithFrame:CGRectMake(1200, 400, 300, 400)];

    [timage setImage:[UIImage imageNamed:@"002.jpg"]];

    [_scroview addSubview:timage];

    [timage release];

    UIImageView * uimage = [[UIImageView alloc]initWithFrame:CGRectMake(1200, 800, 300, 400)];

    [uimage setImage:[UIImage imageNamed:@"8.jpg"]];

    [_scroview addSubview:uimage];

    [uimage release];

    UIImageView * vimage = [[UIImageView alloc]initWithFrame:CGRectMake(1200, 1200, 300, 400)];

    [vimage setImage:[UIImage imageNamed:@"4.jpg"]];

    [_scroview addSubview:vimage];

    [vimage release];

    UIImageView * wiamge = [[UIImageView alloc]initWithFrame:CGRectMake(300, 1600, 300, 400)];

    [wiamge setImage:[UIImage imageNamed:@"76.jpg"]];

    [_scroview addSubview:wiamge];

    [wiamge release];

    UIImageView * ximage = [[UIImageView alloc]initWithFrame:CGRectMake(600, 1600, 300, 400)];

    [ximage setImage:[UIImage imageNamed:@"23.jpg"]];

    [_scroview addSubview:ximage];

    [ximage release];

    UIImageView * yimage = [[UIImageView alloc]initWithFrame:CGRectMake(900, 1600, 300, 400)];

    [yimage setImage:[UIImage imageNamed:@"7.jpg"]];

    [_scroview addSubview:yimage];

    [yimage release];

//    scroview.alwaysBounceHorizontal = YES;

//    scroview.bounces = NO;

    _scroview.pagingEnabled YES;

//    scroview.scrollEnabled = NO;

//    scroview.scrollsToTop = YES;

//    scroview.alpha = 0.8;

//    scroview.contentOffset = CGPointMake(100, 100);



    _scroview.delegate self;

//    scroview.zoomScale = 20;

    //1、给scrollView指定放大缩小的范围

    _scroview.minimumZoomScale 0.5;

    _scroview.maximumZoomScale 2;

    _scroview.bouncesZoom YES;


//    [self viewForZoomingInScrollView:scroview];

    _page = [[UIPageControl alloc]initWithFrame:CGRectMake(20, 20, 280, 40)];

    [self.view addSubview:_page];

    [_page release];

    _page.backgroundColor = [UIColor blackColor];

    _page.numberOfPages 10;

    [_page addTarget:self action:@selector(pageControlAction:) forControlEvents:UIControlEventValueChanged];

    

    

    


    

}

-(void)pageControlAction:(UIPageControl *)apage

{

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

    [_scroview setContentOffset:CGPointMake(_scroview.frame.size.width *apage.currentPage, 0) animated:YES];

}

//指定一个scrollView的子视图可以进行放大缩小操作

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

{

    //    UIView * view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 50, 50)];

    //    [scrollView addSubview:view];

    //    [view release];

    //    view.tag = 100;

    //    return view;

    NSLog(@"%s    %d",__FUNCTION__,__LINE__);

    return [scrollView viewWithTag:200];

//    for (UIView * view in scrollView.subviews) {

//        NSLog(@"%s   %d",__FUNCTION__,__LINE__);

//        return view;

//    }

//    return nil;

}

-(void)scrollViewDidScroll:(UIScrollView *)scrollView

{

//    NSLog(@"嗯嗯嗯嗯");

//    NSLog(@"%@",NSStringFromCGPoint(scrollView.contentOffset));

//    if (scrollView.contentOffset.y > 100 && scrollView.contentOffset.y < 200) {

//        _page.currentPage = 2;

//        scrollView.backgroundColor = [UIColor blueColor];

//    }else  if (scrollView.contentOffset.y > 200 && scrollView.contentOffset.y < 300) {

//        _page.currentPage = 3;

//        scrollView.backgroundColor = [UIColor brownColor];

//    }else  if (scrollView.contentOffset.y > 300  && scrollView.contentOffset.y < 400) {

//        _page.currentPage = 4;

//        scrollView.backgroundColor = [UIColor yellowColor];

//    }else  if (scrollView.contentOffset.y > 400  && scrollView.contentOffset.y < 500) {

//                _page.currentPage = 5;

//        scrollView.backgroundColor = [UIColor redColor];

//    }else  if (scrollView.contentOffset.y > 500  && scrollView.contentOffset.y < 600) {

//                _page.currentPage = 6;

//        scrollView.backgroundColor = [UIColor orangeColor];

//    }else  if (scrollView.contentOffset.y > 600  && scrollView.contentOffset.y < 700) {

//                _page.currentPage = 7;

//        scrollView.backgroundColor = [UIColor purpleColor];

//    }else  if (scrollView.contentOffset.y > 700  && scrollView.contentOffset.y < 800) {

//                _page.currentPage = 8;

//        scrollView.backgroundColor = [UIColor cyanColor];

//    }else  if (scrollView.contentOffset.y > 800  && scrollView.contentOffset.y < 900) {

//                _page.currentPage = 9;

//        scrollView.backgroundColor = [UIColor magentaColor];

//    }else{

//        scrollView.backgroundColor = [UIColor greenColor];

//                _page.currentPage = 0;

//    }

    int number = scrollView.contentOffset.x/scrollView.frame.size.width;

    _page.currentPage = number;


}

-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

{

    NSLog(@"我要开始拖拽啦~~~");

}

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate

{

    NSLog(@"我拖好了~");

}

//开始减速时触发

-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView

{

    NSLog(@"开始减速啦~");

}

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

{

    NSLog(@"减速结束啦~~~");

}

//完成缩放触发

-(void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale

{

    NSLog(@"缩放完啦~~~");

}

//指定某个UIScrollView的子视图可以被放大缩小

- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值