很多开发中,都需要适配不同的屏幕,因此,UIScrollView会用的比较多.这里,我说明一种UIScrollView的使用情况.
由于我的界面有一些附件类型,比如声音,图片,文件之类的,用到了一个按钮去展开和收起附件视图,这个时候,就对UIScrollView的滚动有要求了,如果设定一个定值,没有展开附件视图的时候,视图会滚动,流出大片空白.另外由于附件内容不确定,多少也不确定,计算起来也比较麻烦,而且界面多了,每个界面都需要计算一次,比较麻烦.
解决办法是: 在控制器的viewDidLayoutSubviews中,可以获取视图真实的frame(我使用的约束,在这里也可以得到正确的frame).同时,viewDidLoad中也要写上
-(void)viewDidLoad{
[self.view setNeedsLayout];
[self.view layoutIfNeeded];
}
这样,可以在viewDidLayoutSubviews中得到你最下面视图的frame, 例如testView.
通过下面两句设置scrollView的contentSize
-(void)viewDidLayoutSubviews{
[super viewDidLayoutSubviews];
CGFloat maxh = CGRectGetMaxY(self.testView.frame) ;
self.scrollView.contentSize = CGSizeMake(0, math);
}
注意: 获取的是视图frame的最大y值,你也可以自己添加多一点,来控制scrollView的滚动范围