UI第十七节——UIScrollView

 // 实例化一个ScrollView
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    scrollView.backgroundColor = [UIColor redColor];
    
    // 把ScrollView添加到self.view上
    [self.view addSubview:scrollView];
    
    // 加载一张图片
    UIImage *image = [UIImage imageNamed:@"macbook_overview_og.jpg"];
    
    // 实例化一个ImageView,并设置它的大小和image的大小一致
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, image.size.width, image.size.height)];
    imageView.image = image;
    
    // 把ImageView添加到scrollView
    [scrollView addSubview:imageView];
    
    // 设置scrollView的contentSize属性
    // 这个属性必须在大于scrollView.bounds.size才能滚动
    scrollView.contentSize = image.size;
    
    // 自动调整ScrollView的内容的内嵌(有NavigationBar的时候,内容的Top会内嵌64个点)
//    self.automaticallyAdjustsScrollViewInsets = NO;

    // 内容的内嵌
//    scrollView.contentInset = UIEdgeInsetsMake(100, 100, 50, 50);
    
    // 方向锁,如果打开的话,确定了一个方向去滚动之后,另一个方向就不能滚动了
    scrollView.directionalLockEnabled = YES;
    
    // 点击状态栏的时候,自动滚动到最上面
    scrollView.scrollsToTop = NO;
    
#if 0
    // 内容的偏移量,通常我们都是用它来控制显示(滚动)到哪里
    // (100, 0)
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        
        //  2秒之后,滚动到右下角
        [scrollView setContentOffset:CGPointMake(image.size.width-[[UIScreen mainScreen] bounds].size.width, image.size.height-[[UIScreen mainScreen] bounds].size.height) animated:YES];
    });
#endif
    
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        
        CGRect rect = CGRectMake(800, 500, 300, 300);
        
        // 让一个矩形的区域去滚动到屏幕显示的地方
        [scrollView scrollRectToVisible:rect animated:YES];
    });
    
    // 滚动的开关
//    scrollView.scrollEnabled = NO;
    
    // 隐藏或显滚动的指示条
    scrollView.showsHorizontalScrollIndicator = NO;
    scrollView.showsVerticalScrollIndicator = NO;
    
    // 设置为NO之后就不能拖超出边界了
    scrollView.bounces = NO;
}
#pragma mark - UIScrollViewDelegate


// 当UIScrollView滚动的时候会调用这个函数
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
//    NSLog(@"%@", NSStringFromCGPoint(scrollView.contentOffset));
    
//    scrollView.dragging       // 判断scrollView是否在拖拽
//    scrollView.decelerating   // 判断scrollView是否在减速的过程中
}


// 将要减速
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
    NSLog(@"将要减速");
}

// 已经停止减速(滚动)
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    NSLog(@"scrollView已经停下来了");
}


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

// 停止拖拽
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    NSLog(@"停止拖拽");
}

// 返回需要在ScrollView中实现缩放的View
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    return [self.view viewWithTag:100];
}

如果对你有帮助,请关注我哦!

原文地址:https://www.cnblogs.com/laolitou-ping/p/6245846.html