• 固定UIScrollView滑动的方向


    固定UIScrollView滑动的方向

    一般而言,我们通过这两个参数CGRectMake以及contentSize就可以自动的让UIScrollView只往一个方向滚动.但我遇到过非常奇葩的情况,那就是即使设置的CGRectMake以及contentSize没有一点点问题,这个UIScrollView也能够上下左右滚动-_-!!.

    为了不依赖于CGRectMake以及contentSize,我们可以通过在代理方法scrollViewDidScroll:中进行限制即可.

    没有限制之前的效果:

    源码:

    //
    //  RootViewController.m
    //  BUG
    //
    //  Copyright (c) 2014年 Y.X. All rights reserved.
    //
    
    #import "RootViewController.h"
    
    @interface RootViewController ()<UIScrollViewDelegate>
    
    {
        UIScrollView    *_showView;
    }
    
    @end
    
    @implementation RootViewController
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        UIImageView *showImageView = 
            [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"长图.jpg"]];
        
        _showView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 50, 320, 100)];
        _showView.delegate = self;
        [_showView addSubview:showImageView];
        _showView.contentSize = showImageView.frame.size;
        [self.view addSubview:_showView];
    }
    
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView
    {
        CGPoint point = scrollView.contentOffset;
    //    point.y = 0.f;
        scrollView.contentOffset = point;
    }
    
    @end

    限制后效果:

    //
    //  RootViewController.m
    //  BUG
    //
    //  Copyright (c) 2014年 Y.X. All rights reserved.
    //
    
    #import "RootViewController.h"
    
    @interface RootViewController ()<UIScrollViewDelegate>
    
    {
        UIScrollView    *_showView;
    }
    
    @end
    
    @implementation RootViewController
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        UIImageView *showImageView = 
            [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"长图.jpg"]];
        
        _showView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 50, 320, 100)];
        _showView.delegate = self;
        [_showView addSubview:showImageView];
        _showView.contentSize = showImageView.frame.size;
        [self.view addSubview:_showView];
    }
    
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView
    {
        CGPoint point = scrollView.contentOffset;
        
        // 限制y轴不动
        point.y = 0.f;
        
        scrollView.contentOffset = point;
    }
    
    @end

    核心代码:

  • 相关阅读:
    2060: [Usaco2010 Nov]Visiting Cows 拜访奶牛
    2020: [Usaco2010 Jan]Buying Feed, II
    3396: [Usaco2009 Jan]Total flow 水流
    3403: [Usaco2009 Open]Cow Line 直线上的牛
    2102: [Usaco2010 Dec]The Trough Game
    最小生成树——Kruskal算法
    最短路径——Floyd算法(含证明)
    最短路径——Bellman-Ford算法以及SPFA算法
    最短路径——Dijkstra算法以及二叉堆优化(含证明)
    普通并查集
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/3806399.html
Copyright © 2020-2023  润新知