UIScrollView不能滚动的问题

原创 2013年12月05日 08:57:15

项目使用AutoLayout,故事板,code5,ios7

contentSize最好在viewDidAppear中设置,原因:


在iOS6中,如果像旧版本的资料提到的那样,用IB将一个ScrollView拖到.h文件中创建一个outlet,并在viewDidLoad函数中设置ScrollView的contentSize属性的话,会发现运行的程序中ScrollView可见,但无法拖动。这是因为iOS6中的AutoLayout机制,在viewDidLoad函数被执行后,AutoLayout会重新把contentSize修改为符合屏幕大小的数值(也就是说,现在的contentSize又适合了屏幕大小,并没有大于UIScrollView本身的大小,当然也就不能滚动了)。

解决办法是重写viewDidAppear:(BOOL)animated方法,在父类方法调用之后再修改contentSize属性:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    self.theScroller.contentSize=CGSizeMake(400.0,600.0);
}

这个函数会在autoLayout之后被执行,从而避免了contentSize属性被再次修改。

但IOS 7中,在viewDidLoad中设置也有作用。


自己的ScrollView不能滚动的原因:

在IB中,一个label与ScrollView同视图层次(既,不是包含关系),自己曾经来回拖动两者来更改他们的上下顺序,导致AutoLayout出问题。(吐槽:你丫的好脆弱哦)

解决办法:

删除label与ScrollView,在IB中重新拖放,先拖放ScrollView,再拖放Label(让Label与ScrollView处于同一视图层次,不是包含关系,可在IB中直接把Label拖放到左侧列表中)。

拖放后的效果与前面一模一样,但没有不能滚动的问题了。


注:UITableView也会出现上面的问题。



相关文章推荐

IOS8下的UIScrollView有子控件时滑动经常不能滚动解决办法

在ios8下运行以前开发的项目时,发现scrollview

UIScrollview循环滚动

  • 2016年03月29日 09:22
  • 743KB
  • 下载

UIScrollView在Autolayout自动布局中如何自适应滚动长度?

在iOS开发中,当使用UIScrollView展示内容时,内容超出屏幕长度的情况下,我们会通过UIScrollView的contentSize来设置它的滚动长度。 如果scrollView上的内容较多...

uiscrollview循环滚动

  • 2012年12月18日 17:24
  • 475KB
  • 下载

UI_UIScrollView(滚动视图)的图文理解

1.有图有真相,加油!好好理解 为了便于理解UIScrollView(滚动视图)(下文用scr)的原理,先来三张图片,以便在大脑里有一个摸你的模型, 图中手机的屏幕框内的就是我们设置的sc...

UIScrollView循环滚动

  • 2014年04月16日 15:22
  • 227KB
  • 下载

iOS UIImageView利用UIScrollView实现图片循环滚动

场景: 在开发工作中,有时我们需要实现一组图片循环滚动的情况。当我们使用 UIScrollView 结合 UIImageView 来实现时,一般 UIImageView 会尽量考虑重用,下面例子...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UIScrollView不能滚动的问题
举报原因:
原因补充:

(最多只允许输入30个字)