UIScrollView不能滚动的问题

项目使用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也会出现上面的问题。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值