UIScrollView、UIPageControl

一、UIScrollView

//    创建scrollview

    UIScrollView *scrollview = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 20, self.view.frame.size.width, 600)];

    scrollview.backgroundColor = [UIColor yellowColor];

    scrollview.tag = 1000;

//    设置可以偏移的范围

    scrollview.contentSize = CGSizeMake(scrollview.frame.size.width * 3, 0);

//    分页偏移(默认为NO)

    scrollview.pagingEnabled = YES;

//    是否反弹

//    scrollview.bounces = YES;    

//    关闭水平滚动条

    scrollview.showsHorizontalScrollIndicator = NO;

//    关闭回弹效果

    scrollview.bounces = NO;    

//    设置偏移量

//    scrollview.contentOffset = CGPointMake(200, 0);

    

//    设置代理人

    scrollview.delegate = self;

//    设置视图放大和缩小可允许的倍数

//    scrollview.maximumZoomScale = 2;

//    scrollview.minimumZoomScale = 0.5;

 [self.view addSubview:scrollview];    

//    使用循环向scrillview添加视图

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

                UIImageView *imageview = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, scrollview.frame.size.width, scrollview.frame.size.height)];

        imageview.image = [UIImage imageNamed:[NSString stringWithFormat:@"%d.tiff", i]];   

//        创建专门用于放大缩小的scrollView

        UIScrollView *little = [[UIScrollView alloc] initWithFrame:CGRectMake(scrollview.frame.size.width * (i - 1), 0, scrollview.frame.size.width, scrollview.frame.size.height)];

//        设置放大缩小的倍数

        little.maximumZoomScale = 2;

        little.minimumZoomScale = 0.5;

//        设置代理人

        little.delegate = self;

        [little addSubview:imageview];

        [scrollview addSubview:little]; 

          }


二、 UIPageControl

  UIPageControl *pageC = [[UIPageControl alloc] initWithFrame:CGRectMake(0, 625, self.view.frame.size.width, 20)];

    pageC.tag = 10001;

    pageC.backgroundColor = [UIColor redColor];

//    设置点的数量

    pageC.numberOfPages = 3;

    

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

    [self.view addSubview:pageC];

    

三、事件

//获取缩放视图

  • (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
  •   return [scrollView.subviews firstObject];
  • }


#pragma mark - UIScrollViewDelegate

//滚动(产生偏移)就会触发

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {

    NSLog( @"%f", scrollView.contentOffset.x);

}


//将要开始拖拽

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {

    NSLog(@"拖拽");

}


//将要结束拖拽

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {

    NSLog(@"将要结束拖拽");

}

//scrollViewDidEndDecelerating - 已经结束减速

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {

    //    获取pageControl

    UIPageControl *pageControl = [self.view viewWithTag:10001];

    //    通过偏移量设置第几个点

    pageControl.currentPage = scrollView.contentOffset.x / scrollView.frame.size.width;

//      从滚动的scrollView找到其他子视图

    for (UIScrollView *little in scrollView.subviews) {        

//      判断对象是否属于一个类型

        if ([little isKindOfClass:[UIScrollView class]]) {

//         将视图比例还原

            little.zoomScale = 1.0;     

        }

    }

}

//scrollViewWillBeginDecelerating - 将要开始减速


#pragma mark - PageControl事件

- (void)pageControlAction:(UIPageControl *)pageC {

//     通过tag获取scrollView

    UIScrollView *scrollview = [self.view viewWithTag:1000];

//    通过第几个点设置scrollview的偏移量

//    scrollview.contentOffset = CGPointMake(scrollview.frame.size.width * pageC.currentPage, 0);    

//    使用具动画的方式

    [scrollview setContentOffset:CGPointMake(scrollview.frame.size.width * pageC.currentPage, 0) animated:YES];}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值