固定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

核心代码:

目录
相关文章
|
网络安全
charles抓包显示乱码解决方法
【问题现象】 在抓https协议请求时,Request和Response显示乱码了: 【解决办法】 第一步:点击 【工具栏-->Proxy-->SSL Proxying Settings...】   第二点:添加需求抓包的请求的域名和端口号:   重新抓包,Request显示正常:   PS: 问题解决起来并没有太复杂,不过在网上搜索的资料试过很多都没有起做用,遂在此做个记录。
10342 0
|
Swift iOS开发 Perl
如何解决Swift混编的module编译错误
前言很多iOS工程都是基于Object-C开发,再逐步向Swift演进,演进过程中不可避免要进行Swift混编。Swift模块需要支持LLVM Module规范,混编工程会遇到各种Module编译错误。这对于不熟悉的同学来说简直是灾难,严重影响开发效率。本文会介绍常见的Module编译错误,希望对大家有所帮助。常见错误1:Could not build module xxx当一个OC模块引用了Sw
7613 1
如何解决Swift混编的module编译错误
|
开发工具 git
Git使用不当导致代码丢失的N种场景
背景git作为目前使用最广泛的分布式版本控制软件,集团内基本上所有开发同学都使用它来做代码管理。一个最典型的使用场景,是一个git仓库存在一个master主干分支,多个需求基于master拉自己的开发分支,然后在发布日时,新建一个release分支,然后原先并行的几个开发分支merge到release分支上,最后基于该分支发布上线,上线后release再merge到master主干上,一次发布完成
3448 1
Git使用不当导致代码丢失的N种场景
|
存储 NoSQL 数据管理
mongodb是怎么分库分表的
综上所述,MongoDB的分库分表实践是一门综合技术与业务洞察的艺术。从精确的分片键选择到集群的精心搭建,再到策略的灵活运用,每一步都需细致规划。提供的高性能云服务,可以更加便捷地搭建和维护这样的分布式数据库环境,为企业级应用带来前所未有的扩展性和可靠性。
447 0
|
XML 数据格式 开发者
数据解析之Xpath解析(超详细定位)1
数据解析之Xpath解析(超详细定位)1
466 0
|
缓存 网络协议 CDN
Docsify 配合 Github Pages 搭建一个自己的云笔记
Docsify 配合 Github Pages 搭建一个自己的云笔记
420 0
|
Web App开发 应用服务中间件 Apache
Get/POST方法提交的长度限制
 1.    Get方法长度限制 Http Get方法提交的数据大小长度并没有限制,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。 如:IE对URL长度的限制是2083字节(2K+35)。 下面就是对各种浏览器和服务器的最大处理能力做一些说明. Microsoft Internet Explorer (Browser) IE浏览器对URL的最大限制
11260 2
|
运维 安全 大数据
推动液冷技术普惠 阿里云联合伙伴发布九项液冷技术成果
推动液冷技术普惠 阿里云联合伙伴发布九项液冷技术成果
推动液冷技术普惠 阿里云联合伙伴发布九项液冷技术成果
|
JSON 数据格式 iOS开发
**iOS发JSON请求中字符串加转义,返回的JSON去转义
iOS中使用NSSerialization把对象转为JSON字符串后,多出来反斜杠的问题 http://segmentfault.com/q/1010000000576646 NSDictionary *dic = @{@"url": @"http://.
4768 0
下一篇
开通oss服务