UI - UIScrollView

本文详细介绍了如何使用UIScrollView创建可滚动视图,并设置了滚动属性如关闭滚动条、禁止回弹等。同时实现了UIScrollViewDelegate方法来监听滚动事件,通过UIPageControl指示当前滚动页面。

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

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

    scrollView.backgroundColor = [UIColor yellowColor];


    scrollView.tag = 1001;

    [self.view addSubview:scrollView];
    [scrollView release];


// 设置可以偏移的范围
    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width *6 , 0);

//    整页偏移
//    默认为 - NO
    scrollView.pagingEnabled = YES;

//    关闭水平滚动条
    scrollView.showsHorizontalScrollIndicator = NO;



//    关闭回弹效果
    scrollView.bounces = NO;

//    设置起始偏移量
//    scrollView.contentOffset = CGPointMake(200, 0);


//    设置代理人   
    scrollView.delegate = self;
//    [self.view addSubview:scrollView];

//    scrollView.zoomScale = 2.0;


//    设置视图放大和缩小允许的倍数
//    scrollView.maximumZoomScale = 2;
//    scrollView.minimumZoomScale = 0.5;
//    

******************************************
//pragma mark - UIScrollViewDelegate
//一些监听及代理方法

//获取缩放视图
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {

    return [scrollView.subviews firstObject];
}


//滚动(产生偏移)就会触发
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    NSLog(@"%f", scrollView.contentOffset.x);



}


//将要开始拖拽
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {
    NSLog(@"拖拽");
}

//将要结束拖拽

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
    NSLog(@"将要结束拖拽");
}




//结束拖拽
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    NSLog(@"结束拖拽");
}
//已经结束减速
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {

    //获取pageControl


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

    //    通过偏移量设置第几个点
    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;
        }

    }


}

************************************************


//设置下面点的数量和位置

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

    pageC.backgroundColor = [UIColor redColor];

    pageC.tag = 1002;


//    设置点的数量

    pageC.numberOfPages = 5;

//    添加事件

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




//触发点击事件
- (void)pageControlAction:(UIPageControl *)pageC {
//    通过tag值获取scrollview
    UIScrollView *scrollView = [self.view viewWithTag:1001];

//    通过第几个点设置scrollView的偏移量
//    是指具有动画效果
    [scrollView setContentOffset:CGPointMake(scrollView.frame.size.width*pageC.currentPage, 0) animated:YES];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值