首页 > 代码库 > 固定UIScrollView滑动的方向
固定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
核心代码:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。