1. 在storyBoard 上放置一个 UISCrollView ,设置它的四个约束,使其铺满屏幕。
UISCrollView 是否需要能滚动是由其contentSize 来决定的,如果使用代码中我们需要设置contentSize,但如果使用autoLayout,UISCrollView的contentSize 将由其subView的size来决定。
现在做一个demo,我们放置两个按钮,一个在屏幕的上方, 一个在其屏幕的底边,使其底边的button 在6上无需滚动,在其它的屏幕是需要滚动才能看到。
我们现在给UISCrollView 添加一个View作为其SubView, SubView的contentSize将由View的size来决定。 设置view的约束。
这里必须设置上面所有的约束条件,否则会报错说ContentSize无法确定。注意,这里对于上下左右的约束并不是相对于UISCrollView,而是UISCrollView内部的ContentSize容器而言。width ,height 决定了View的宽高,ContenSize 所在的容器的四个边跟view的四个约束关系就能计算出ContentSize的大小。
运行代码我们实现了在6上无需滚动而在5及4上都要滚动的效果,但似乎ConetentSize 不太精确,我们需要更精确的ContentSize。
我们创建 View 的width, height constraint的 IBOutlet
在ViewController中添加如下代码:
- - (void)viewDidLayoutSubviews {
- [super viewDidLayoutSubviews];
- self.widthConstraint.constant = self.view.frame.size.width;
- self.heightConstraint.constant = CGRectGetMaxY(self.button.frame) + 20;
- }
上面的代码滚据屏幕宽度计算了view的宽度,即UIScrollView的ContnetSize的width使其在水平是不能滚动, 根据底边的UIBUtton计算出View的height,即UIScrollView的ContnetSize的height.