• 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];
    }

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

  • 相关阅读:
    poj 3254 Corn Fields (状态压缩dp)
    poj 2479 Maximum sum(求最大子段和的延伸)
    poj 1185 炮兵阵地 (状态压缩dp)
    poj 1011 hdoj 1455 Sticks(搜索+剪枝)
    light oj 1255 Substring Frequency (KMP)
    codeforces 272C. Dima and Staircase(线段树)
    hdoj 1176免费馅饼(dp)
    求最大连续子段和 的 dp算法
    light oj 1258 Making Huge Palindromes(KMP)
    实战 | UI 调度自动化测试平台(基于 Python)
  • 原文地址:https://www.cnblogs.com/laolitou-ping/p/6245846.html
Copyright © 2020-2023  润新知