一、前引
在我们开发的过程中,经常要用到详情页。详情内容过多,或者是因为屏幕适配的缘故(在7p 上的固定页面展示在phone5 phone5s 上),会导致页面显示不全,就使得我们需要合理的定制一个 scrollview 去展示。
纵观现在市场上的 xib 定制 scrollview 上的解答内容,能用的很少。而且对于刚入门的新手来说很难理解。在此 我总结一番,希望能给大家带来帮助。
二、详解
综合来说xib 拖 scrollview 的难点在于——scrollview 上添加子控件。再侧重点说的话 ,就是scrollView 上的 contentSize 的设置,我总结的原则主要有两点:
1、确定 scrollview 的视图显示范围
在这里我们要确定 scrollview 在父视图中的显示范围,为了能对比显示,我没有让其占据全屏显示。这个步骤,并没有什么难点,刷新布局后展示效果如下
2、添加子视图,并确定子视图的大小,以及到 scrollview 的四边距(为什么是四边距?)
这个是我们添加子视图的关键,设置子视图的大小,主要也是为了最后我们的 contentSize 服务的。我们平常设置一个视图的约束,设置宽高就以及左边距 上边距就可以确定一个视图的位置,编译器就不会报错
这是我们正常视图中添加子视图,需要做出的约束条件。但是我们按照这个方法在 scrollview 中设置会怎么样呢 ?
这个方法在设置 scrollview 中就报错
原因说我们没有足够的约束来判断 scrollview 的 contentSize,这是问题的关键,假如我们按照现在约束条件来计算 contenSize 的横向大小 我们可以用 左边距+子视图宽度 ,可这样的话,你没有设置这个视图右边的范围,也就是无法计算出视图的总容纳范围。所以我们不能再按正常视图的设置约束的方法去设置 scollView。因为我们scollview 有一个特殊的因素 contentSize,正确的设置方法如下
四边距的设置是为了配合子视图的大小 来确定 scrollview 的 contenSize。 编译器会根据
(1)scrollview 的约束 设置scrollview视图的位置大小
(2)会根据子视图的四边距,来确定子视图在 scrcollview 的位置
(3)会根据四边距 和子视图大小 来确定 contentSize。
这样你的编译就不会出现问题。
三、总结
仔细理解,就会发现我们设置 scrollview 还是非常简单的,我们除了常规的设置约束的同时,再计算一下当前的约束能否确定当前 scrollview 的 contentSize,能否 唯一确定当前 scrollview的内容显示范围(和在父视图的展示范围不一样),如果可以 ,那么你的设置就没有问题。
希望我的总结能帮到大家,也希望有发现错误的同行,及时指出问题,大家互相交流,互相切磋。