iOS ScrollView实现自动布局的方法(适用Swift 3.0)

  

  

众所周知我们大家在开发中,可能会有一些页面显示的元素很多,可能会超出一个屏幕,但也不适合用TableView或者CollectionView,此时我们一般会用滚动视图,那么就会出现自动布局的问题。下面话不多说了,来一起看看详细的介绍吧。

  

  

纯代码   

      <李>特点编码繁琐:需要手写控件   <李>安全:只要正确地设置约束或者,contentSize,一般不会出现滚动问题   
  

示例         懒惰的var滚动视图:UIScrollView={   让obj=UIScrollView(框架:CGRect中(x: 0, y: 0,宽度:.screenW,高度:self.screenH))   返回obj   }()   覆盖func viewDidLoad () {   super.viewDidLoad ()   view.addSubview(滚动视图)   让subViewH: CGFloat=400   让赢富数据=UIView(框架:CGRect中(x: 0, y: 0,宽度:enW,高度:subViewH))   赢富数据。写成backgroundColor=UIColor.red   scrollView.addSubview(赢富数据)   让bottomView=UIView(框架:CGRect中(x: 0 y: subViewH, h: screenW,高度:subViewH))   bottomView。写成backgroundColor=UIColor.purple   scrollView.addSubview (bottomView)   滚动视图。contentSize=CGSize(宽度:screenW高度:iewH * 2)   }      

<>强效果图

  

 iOS ScrollView实现自动布局的方法(适用Swift 3.0)

  

  

<>强特点

  
      <李>搭建界面简单李   <李>直观李   <李>需要占位视图   
  

<强>页面结构如图

  

 iOS ScrollView实现自动布局的方法(适用Swift 3.0)

  

<强>可能出现的问题

  
      <李>滚动视图中直接添加子元素,报错:有模棱两可的滚动内容高度   <李>滚动视图内容超出屏幕仍不能滚动李   
  

 iOS ScrollView实现自动布局的方法(适用Swift 3.0)

  

<>强实现滚动的代码

        覆盖func viewDidLayoutSubviews () {   super.viewDidLayoutSubviews ()   让statusBarH: CGFloat=20//如果没有导航栏,就返回状态栏的高度   让navH=gationController& # 63; .navigationBar.frame.maxY & # 63; & # 63;statusBarH   让deltaH=(screenH - navH) - bottomView.frame.maxY   placeholderViewBottomConstraint。常数=deltaH   }      

<>强效果图

  

 iOS ScrollView实现自动布局的方法(适用Swift 3.0)

  

  

特点   

      <李>搭建界面简单李   <李>直观李   <李>不需要占位视图,不需要对滚动视图的布局做特殊处理李   <李>需要处理外部视图的框架(如果没有用户交互,可以忽略)   
  

页面结构如图

  

 iOS ScrollView实现自动布局的方法(适用Swift 3.0)

  

可能出现的问题

  
      <李>滚动视图中直接添加子元素,报错:有模棱两可的滚动内容高度   <李>当内容超出屏幕高度时,必须得设置ContainerView的框架,否则不能滚动或者超出屏幕部分不接受事件   
  

 iOS ScrollView实现自动布局的方法(适用Swift 3.0)

  

实现滚动的代码

        覆盖func viewDidLoad () {   super.viewDidLoad ()   scrollView.addSubview (containerView)   }   覆盖func viewDidLayoutSubviews () {   super.viewDidLayoutSubviews ()   var f=containerView.frame   f.size。宽度=screenW//这句代码很重要,处理超出屏幕无法响应事件问题   f.size。身高=bottomView.frame.maxY   containerView.frame=f   滚动视图。contentSize=CGSize(宽度:screenW高度:omView.frame.maxY)   }      

效果图   

 iOS ScrollView实现自动布局的方法(适用Swift 3.0)

  

  

<强>滚动视图不能滚动的原因