Stroyboard中使用ScrollView

当我们使用Storyboard开发项目时,如果要往控制器上拖入一个ScrollView并且添加约束设置滚动区域,是有特殊的规定的:

  • 拖入一个scrollview,规定它的位置大小:

  • 如果想要scrollview滚动的话,需要一个view作为scrollview的子视图,称之为 containerView,并且containerView的约束决定着scroll view 是否可以滚动

注意:在实际开发中,我们可能会遇到不止上下滚动(设置水平居中和高度)的时候,如果要左右滚动就设置垂直居中和宽度就好,如果要上下左右都可以滚动的话,就设置宽高、不需要设置水平或者垂直居中

常用方法和属性

        // 滚动区域
scrollView.contentSize
// 当前的滚动位置,偏移量
scrollView.contentOffset
// content view 的定点位于 scroll view 的位置
scrollView.contentInset
        // 定向锁定 true的话就算是双向滚动,触发滚动时也只能单向滚动
scrollview.directionalLockEnabled = true
// 滚动条样式
scrollview.indicatorStyle = UIScrollViewIndicatorStyle.Black
// 减速速度
scrollview.decelerationRate = 0.5

代理方法备忘

    // 视图滚动中就会调用这个方法,多次调用。
func scrollViewDidScroll(scrollView: UIScrollView) { } // 是否允许点击状态栏滚动到最顶部。
func scrollViewShouldScrollToTop(scrollView: UIScrollView) -> Bool {
return true
} // 在允许点击状态栏滚动到最顶部的情况下,点击状态栏滚动到最顶部时调用
func scrollViewDidScrollToTop(scrollView: UIScrollView) {
print("scrollViewDidScrollToTop")
} // 滚动即将开始拖动,当手指稍微移动一点点时调用方法
func scrollViewWillBeginDragging(scrollView: UIScrollView) {
print("scrollViewWillBeginDragging")
} // 滚动视图已经结束减速,即为滚动视图已经停止了滚动
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
print("scrollViewDidEndDecelerating")
} // 滚动视图即将开始减速,当手指离开后让scrollview自然减速,就会调用这个方法
func scrollViewWillBeginDecelerating(scrollView: UIScrollView) {
print("scrollViewWillBeginDecelerating")
} // 这个方法当调用 scrollview.setContentOffset(animation:) 这个方法时才会调用这个方法
func scrollViewDidEndScrollingAnimation(scrollView: UIScrollView) {
print("scrollViewDidEndScrollingAnimation")
} // 滚动视图即将停止拖拽,即手指离开屏幕那一刻
func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
print("scrollViewWillEndDragging")
} // 滚动书体已经停止拖拽,会比scrollViewWillEndDragging晚调用
func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {
print("scrollViewDidEndDragging")
} // 滚动视图已经缩放,多次调用
func scrollViewDidZoom(scrollView: UIScrollView) {
print("scrollViewDidZoom")
} // 滚动视图即将开始缩放
func scrollViewWillBeginZooming(scrollView: UIScrollView, withView view: UIView?) { } // 滚动视图已经缩放完毕
func scrollViewDidEndZooming(scrollView: UIScrollView, withView view: UIView?, atScale scale: CGFloat) { } // 返回要缩放的视图
func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
return zoomingView
}

Scroll view 备忘的更多相关文章

  1. Table view 备忘

    Table view 备忘 本篇会以备忘为主,主要是一些基础的代理方法和数据源方法具体的优化好点子会后续跟上. Table view的数据源方法 必须实现的数据源方法 // 返回每一行的cell,可以 ...

  2. Colletion View 简单的备忘

    UIColletionView 这篇只是做UIColletionView的常用属性.代理方法和数据源方法的备忘,之后做一些自定义布局,增加删除动画等. UIColletionViewFlowLayou ...

  3. UITextView -- 基础备忘

    UITextView 这篇文章只涉及到基本的使用,日后会写一些关于结合TextKit的备忘 基本属性 let screenSize = UIScreen.mainScreen().bounds.siz ...

  4. UISearchBar -- 备忘

    搜索功能的备忘 UISearchBar UISearchBar是一个搜索栏,继承自UIView,也是常用的控件之一,所以特别写一篇备忘方便以后做工具文章. 例子: let searchBar = UI ...

  5. C# devExpress BandedGridView属性 备忘

    BandedGridView属性备忘 StringBuilder sb = new StringBuilder(); DevExpress.XtraGrid.Views.BandedGrid.Band ...

  6. 基于Prism.Windows的UWP开发备忘

    以前做UWP开发都是使用MvvmLight,主要是简单易上手,同时也写了很多MvvmLight的开发系列文章: UWP开发必备以及常用知识点总结 UWP开发之Mvvmlight实践九:基于MVVM的项 ...

  7. AngularJS之备忘与诀窍

    译自:<angularjs> 备忘与诀窍 目前为止,之前的章节已经覆盖了Angular所有功能结构中的大多数,包括指令,服务,控制器,资源以及其它内容.但是我们知道有时候仅仅阅读是不够的. ...

  8. 工作T-SQL备忘

    作为一个"浸淫" Oracle 数据库很久的人来说, 突然转入 T-SQL, 也就是 MSSQL , 工作中经常用的查询和 MSMS 使用备忘如下 : --1. 切换对应的库连接 ...

  9. Express模版引擎hbs备忘

    最近几天折腾了下express,想找个合适的模版引擎,下面是一些折腾过程的备忘 选择标准 选择一门模版语言时,可能会考虑的几点 语法友好(micro tmpl那种语法真是够了) 支持模版嵌套(子模版的 ...

随机推荐

  1. 用CRTP在C++中实现静态函数的多态

    我上一篇博客[C++的静态分发(CRTP)和动态分发(虚函数多态)的比较](http://www.cnblogs.com/fresky/p/3504241.html)介绍了如何用CRTP(Curiou ...

  2. linux中mysql完整卸载命令操作

    yum方式安装的mysql 1.yum remove mysql mysql-server mysql-libs compat-mysql51 2.rm -rf /var/lib/mysql3.rm ...

  3. 文件IO 练习题

    3.1 当读/写磁盘文件时,本章中描述的函数是否具有缓冲机制?请说明原因. 3.1 所有的磁盘 I/O 都要经过内核的块缓冲区(也称为内核的缓冲区高速缓存),唯一例 外的是对原始磁盘设备的 I/O,但 ...

  4. JAAS LOGIN IN WEBLOGIC SERVER--reference

    The Java Authentication and Authorization Service (JAAS) is a standard extension to the security in ...

  5. Eureka Web UI URL(eureka显示主界面路径设定)

    http://stackoverflow.com/questions/30200988/spring-cloud-with-eureka-eureka-web-ui-url ************* ...

  6. node express

    在某QQ群里,发现大家都在搞node,为了不被out,这周主要研究了一下,还挺高大上. 参考了下资料,适合初学者学习. Node和NPM的安装够便捷了,不细说...有几点基础顺手提一下: 安装命令中的 ...

  7. Android pulltorefresh引用遇到的一个问题

    今天在使用pulltorefresh插件的时候遇到了一个让人头疼的问题,在Eclipse中导入要用到的library项目,然后新建一个项目引入Library,显示的是引入成功,如图 而且project ...

  8. MySQL数字类型中的三种常用种类

    数字类型 MySQL数字类型按照我的分类方法分为三类:整数类.小数类和数字类. MySQL数字类型之一我所谓的“数字类” 就是指 DECIMAL 和 NUMERIC,它们是同一种类型.它严格的说不是一 ...

  9. MITMF使用import error

    安装问题: 1.ubuntu 14.04.安装使用capstone时候,提示出现import error:ERROR: fail to load the dynamic library. 解决方法:将 ...

  10. DataGrid列的合并

    /// <summary> /// DataGrid列的合并 /// 注意:1.DataGrid在绑定的时候进行分组和排序,才能让相同的行放在一起 /// 2.方法应用的时机,应该在Dat ...