博客> xib正确创建可滑动的UIScrollView
xib正确创建可滑动的UIScrollView
2017-10-18 05:02 评论:0 阅读:763 西单_夜未央
FSCalendar

我们在xib里面创建scrollview是不能直接设置contentSize的,这就导致用xib创建出得Scrollview不能滑动。正确的做法是:

 001UXx0pgy6TNNMbEtm04&690.jpg 1.创建ScrollView 2.创建ScrollView的子View(子view如有多个,需先创建一个容器view,然后将所有子view放入容器View,在将容器view放入ScrollView,这个容器view就相当于下面的imageView);下面为示例图  001UXx0pgy6TNTpEQTC78&690.png

这里以imgeview为例;并进行约束[转载]xib正确创建可滑动的UIScrollView

 001UXx0pgy6TNQuTYNL65&690.jpg 注意这里的高度Height的约束

 001UXx0pgy6TNQlbBTH49&690.jpg

因为是垂直滑动,所以需要点选imageview的 Horizontal Center in Container ,反之水平滑动需点选Vertical Center in Container(对应的需创建宽度Width约束) 3.其实到了这里已经可以了,但是很多时候我们创建的Scrollview的contentSize并不是固定的,这就需要对Scrollview的子View的Frame进行动态的改变,做法如下:

 001UXx0pgy6TNRNHP6k2c&690.jpg

我们可以看到刚刚对Scrollview的子View——imageView的高度Height的约束,将其拖入对应类的.h文件内,取名imageHeight;

 001UXx0pgy6TNSdG8T8fa&690.jpg 然后就可以在 -(void)viewDidAppear:(BOOL)animated 对其经行动态的修改了

 001UXx0pgy6TNSeE7x6c0&690.jpg

4.在Scrollview内需要添加多个子View(既需要容器View)还有稍微的不同,因为容器view内的多个View之间多是约束关系,所以我们不能很好的得到我们需要的高度值来动态修改容器view的高度(宽度)约束。解决方法也很简单,就是把容器view内带有约束的最后(最下/最右)一个子view(lastView)拖入.h,然后计算lastView.frame.origin.y(x)+lastView.frame.size.height(width) 即为我们需要的新的约束高度(宽度);  001UXx0pgy6TNTKdyTl47&690.jpg

5.有时候我们需要去网络获取数据,然后很据网络返回的数据来加载子view,这样就会出现一个致命的问题,我在项目中的数据接口是用Block返回的,当block返回数据时,viewController已经加载出来了,所以尺寸一直有问题。考虑了一下有两种实现方法1.使用同步加载获取数据。2.在Block内更新布局约束。我的解决方法是:在 -(void)updateViewConstraints 里修改NSLayoutConstraint 在数据返回Block里面调用[self updateViewConstraints]; 不知道这样会不会有什么问题。希望大牛指教

 001UXx0pgy6TNV28GeZc9&690.jpg

 001UXx0pgy6TNV2ceGGee&690.jpg

收藏
3
sina weixin mail 回到顶部