iOS UIScrollView的使用及其不能滑动问题解决

来源:互联网 发布:opera linux 安装 编辑:程序博客网 时间:2024/05/24 06:50

    在 app 开发中我们经常会碰到有些页面很长,屏幕一次显示不完,需要用户滑动屏幕来现实,对此,android 和 ios 都引入了 Scrollview 这个控件来实现滑动显示过长的页面,andriod中这个控件的使用比较简单,用Scrollview把布局包起来就可以实现滑动,而且开发人员在开发UI的时候,实时UI视图也会根据布局的长度而变长,方便开发人员搭建UI,但是 ios 的开发就没这么好的待遇了,xcode 中的根视图不会因为uiScrollview里面布局的加长而改变,因此我们在搭建超出屏幕那部分界面的时候就需要采取一些特殊手段啦,下面就为大家讲解用法。

  首先我们先把 ScrollView 拖入布局器,然后设置约束,上下左右的约束均设置为 0 ,让其充满屏幕,此时还不能往里面添加我们的控件,还需要最重要的一步,我们需要拖入一个 UIView 放入 ScrollView 中,设置约束让其充满屏幕,然后在视图结构目录右击点住刚才放入的 UIView不放手,鼠标拖向 ScrollView ,弹出菜单,选择 “equal widths” 和 “equal heights”,如下图所示:


  这么设置的原因是 ScrollView 并没有自身的高度,而控件要在屏幕绘制就必须知道控件的宽和高,所以 ScrollView 就必须从它的子根控件获取宽高,然后设置给自己。

      做好这几步之后就可以做布局了,为了屏幕更好的适配小屏幕手机,我们选择预览视图的机型为iphoneSE,它和5s一样都是 4英寸的屏幕,当我们绘制满了整个布局器的时候,该怎么绘制多出来的布局呢?

      我们在布局器中在另外拖出一个 UIView 作为根布局,我们在这个布局中就可以绘制我们的多出来的布局啦,做完这个布局之后就要把这个布局添加进我们刚开始做的那个布局中,把它们拼接起来,我们用代码实现,我刚开始也是想的是直接在 viewDidLoad()这个方法中,把第二个 UIView 使用 addsubview()这个方法添加进第一个 ScrollView 中的那个 UIView,结果发现发现页面不能滑动,而且第二个UIView还遮挡了第一个页面,后来经过研究发现,我们必须得重写一个方法:viewDidAppear( _animated : Bool) 这个方法,然后在里面设置 ScrollView 的内容尺寸 :scrollView.contentSize = CGSize(width: 320, height: 900),紧接着,我们就再重写一个方法:viewDidLayoutSubviews(),代码如下:

 overridefunc viewDidLayoutSubviews() {

      

        let y :CGFloat = scrollView.bounds.height;

        secondView.frame = CGRect(x: 0, y: y, width: view.bounds.width, height: secondView.bounds.height)

        rootview.addSubview(secondView);

    }


    我们先是获取了当前页面ScrollView 的高度,把它作为第二个UIView的y轴坐标,设置好rect,再把它添加进第一个视图的UIView中,这样就基本实现了ScrollView的滑动~~

   下面是我仿作的某App的个人中心实现的ScrollView的滑动,做的比较粗糙哈哈,第二个页面就放了一个大大的蓝色view意思意思,凑合能看就行~~




 

 


1 0
原创粉丝点击