zoukankan      html  css  js  c++  java
  • 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];
    }

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

  • 相关阅读:
    Codeforces Round #649 (Div. 2) D. Ehab's Last Corollary
    Educational Codeforces Round 89 (Rated for Div. 2) E. Two Arrays
    Educational Codeforces Round 89 (Rated for Div. 2) D. Two Divisors
    Codeforces Round #647 (Div. 2) E. Johnny and Grandmaster
    Codeforces Round #647 (Div. 2) F. Johnny and Megan's Necklace
    Codeforces Round #648 (Div. 2) G. Secure Password
    Codeforces Round #646 (Div. 2) F. Rotating Substrings
    C++STL常见用法
    各类学习慕课(不定期更新
    高阶等差数列
  • 原文地址:https://www.cnblogs.com/laolitou-ping/p/6245846.html
Copyright © 2011-2022 走看看