一、什么是UIScrollView

  *移动设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也是相当有限

  *当展示的内容较多,超出一个屏幕时,用户可通过滚动收拾来查看屏幕以外的内容

  *普通的UIView不具备滚动功能,不适合显示过多内容

  *UIScrollView是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有的内容

二、UIScrollView显示内容的小细节

  *超出UIScrollView边框的内容会被自动隐藏

  *用户可以用收拾拖动来查看超出边框并被隐藏的内容

三、UIScrollView的常见属性

@property(nonatomic) CGPoint contentOffset;--这个属性用来表示UIScrollView滚动的位置  

@property(nonatomic) CGSize contentSize;--这个属性用来表示UIScrollView的内容的尺寸,滚动范围(能滚多远)

@property(nonatomic) UIEdgeInsets contentInset;--这个属性能够在UIScrollView的四周增加额外的滚动区域,一般用来避免scrollView的内容被其他控件挡住

**************************图片实例***********************************

**************************图片实例***********************************

@property(nonatomic) BOOL bounces;--设置UIScrollView是否需要弹簧效果

@property(nonatomic,getter = isScrollEnabled) BOOL scrollEnabled;--设置UIScrollView是否能滚动

@property(nonatomic) BOOL showsHorizontalScrollIndicator;--是否显示水平滚动条

@property(nonatomic) BOOL showsVerticalScrollIndicator;--是否显示垂直滚动条

关于scrollView中滚动条的注意事项:在scrollView中滚动条也是控件,在类似以下案例中,要注意滚动条的存在

代码示例:

 1 - (void)viewDidLoad {
 2     [super viewDidLoad];
 3     // 定义一行中的列数
 4     int count = 3;
 5     CGFloat w = 50;
 6     CGFloat h = 70;
 7     CGRect rect;
 8     for (int i = 0; i < 50; i++) { // 循环加控件
 9         UIView *view = [[UIImageView alloc] init];
10         view.backgroundColor = [UIColor redColor];
11         NSInteger row = i / count; // 所在行
12         NSInteger cols = i % count; // 所在列
13         CGFloat x = cols * (w + 30); // 列决定x
14         CGFloat y = row * (h + 20); // 行决定y
15         view.frame = CGRectMake(x, y, w, h);
16         [self.scrollView addSubview:view];
17         if (i == 49) {
18             // 将最后一个格子的rect记录下来
19             rect = view.frame;
20         }
21     }
22     // 最好不要直接拿到所谓的最后一个控件,来算得scrollView的可视区的高度,因为scrollView中多了两个滚动条控件,最后拿到的控件不一定是自己想要的
23 //    UIView *lastView = [self.scrollView.subviews lastObject];
24 //    CGFloat contentH = lastView.frame.origin.y + lastView.frame.size.height;
25     // 或者将滚动条的这两个属性设置为NO,但是此方法用户体验不好
26 //    self.scrollView.showsHorizontalScrollIndicator = NO;
27 //    self.scrollView.showsVerticalScrollIndicator = NO;
28     // 获得y坐标的最大值
29     CGFloat contentH = CGRectGetMaxY(rect);
30     // 设置scrollview的可视范围
31     self.scrollView.contentSize = CGSizeMake(0, contentH);
32 }

四、UIScrollView中的代理

  *成为代理的条件

  *一般情况下,就设置UIScrollView所在的控制器为UIScrollView的delegate

  *设置控制器为UIScrollView的delegate有2种方法:

  1>通过代码(self就是控制器)-----self.scrollView.delegate = self;

  2>通过storyboard拖线(右击UIScrollView)

  

  *然后,控制器应该遵守UIScrollViewDelegate协议

  *对其中的四个代理方法进行简单介绍

 1 #pragma mark - <UIScrollViewDelegate> 四个代理方法的介绍
 2
 3 - (void)scrollViewDidScroll:(UIScrollView *)scrollView
 4 {
 5     // 只要滚动就调用
 6 }
 7
 8 -(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
 9 {
10     // 开始拖拽的时候调用
11 }
12
13 -(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
14 {
15     // 结束拖拽的时候调用
16 }
17
18 -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
19 {
20     // (减速完毕)停止滚动的时候调用
21 }

五、内容缩放

    

iOS边练边学--UIScrollView的属性简单使用,代理的简单介绍以及内容缩放相关推荐

  1. iOS边练边学--UITableViewCell的常见属性设置

    1 // 取消选中的样式(常用) 让当前 cell 按下无反应 2 cell.selectionStyle = UITableViewCellSelectionStyleNone; 3 4 // 设置 ...

  2. iOS边练边学--CALayer,非根层隐式动画,钟表练习

    一.CALayer UIView之所以能显示在屏幕上,完全是因为他内部的一个图层 在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性 ...

  3. iOS边练边学--iOS中的XML数据解析

    XML的解析方式 SAX 大小文件都可以 NSXMLParser DOM 最好是小文件 GDataXML NSXMLParser的用法 创建解析器来解析 // 创建XML解析器 NSXMLParser ...

  4. iOS边练边学--AFNetWorking框架GET、Post、Download、Upload,数据解析模式以及监控联网状态...

    一.AFNETWorking简单使用 get请求 get请求,以后经常用NSURLSession底层的写的部分 简单的post请求 用post请求下载文件,方法很多,还可以通过upload任务来执行 ...

  5. ios UIScrollView 基础属性

    转 UIScrollView 原理 在滚动过程当中,其实是在修改原点坐标.当手指触摸后, scroll view会暂时拦截触摸事件,使用一个计时器.假如在计时器到点后没有发生手指移动事件,那么 scr ...

  6. iOS UI基础-7.0 UIScrollView

    概述 移动设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也相当有限.当展示的内容较多,超出一个屏幕时,用户可通过滚动手势来查看屏幕以外的内容,普通的UIView不具备滚动功能,不能显示过多的 ...

  7. IOS开发UI控件UIScrollView和Delegate的使用

    1. 什么是UIScrollView 移动设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也相当有限 当展示的内容较多,超出一个屏幕时,用户可通过滚动手势来查看屏幕以外的内容 普通的UIVie ...

  8. iOS开发之段落文字排版的属性与细节

    在手持式行动装置中,被限制住的显示屏幕空间,使得我们必须花费更多的时间与功夫来处理文字内容的安排,舒适的行距.间距以及字号,这些需要不断调整的细节,会大大影响内容的阅读性与程序的使用性. 在简单介绍 ...

  9. Python 以练促学之 List 篇

    文章目录 以练促学 练习 1,在 Python 中反转给定的 List 练习 2,按索引连接两个 List 练习 3,给出一个数字类型的 Python List.将 List 中的每一项转换成它的平方 ...

最新文章

  1. C++ __gnu_pbds(平板电视)超详细教程(C++内置的平衡树,字典树,hash)
  2. SAP Query达到select * where 的效果 2011-04-29
  3. django admin扩展 相关备忘录
  4. 音视频通话:小议音频处理与压缩技术
  5. wpf BackgroundWorker 的简单用法
  6. Mybatis的CRUD之XML方式以及动态SQL
  7. 一个月读完6本书?这些烧脑神书,你能读完1本,就是学霸!
  8. ASP.NET生成静态页面方法大全(2)
  9. 程序员养生(01) -- 心态
  10. 二叉树最近公共祖先 LCA
  11. 同时买票是怎么实现的_腰包怎么背才更新潮?教你3种时尚背法,告别土味老气风...
  12. VMware虚拟机中ubuntu的磁盘怎么扩容
  13. c语言快递信息系统有哪些信息,国内知名物流信息管理系统软件有哪些?分别是什么?...
  14. python分组求和_Python–多个键分组求和
  15. Win7 XP双系统安装
  16. amd cpu 安卓模拟器_Android 模拟器现已支持 AMD 处理器和 Hyper-V
  17. 有关密钥的最全总结都在这了
  18. JS港澳台身份证校验
  19. 孢子社群:今日推荐人工智能微信群:TensorflowNews.com 9群
  20. 在html里ff3d3d是什么颜色,HTML颜色参考

热门文章

  1. 3dmax如何显示参考图_3dmax软件当中的参照文件的作用与应用,了解一下
  2. 安装python时需要勾选_工业洗衣机安装时需要注意什么?
  3. 小米运维—互联网企业级监控系统实践
  4. APP运营者如何对用户的数据进行分析?
  5. Python用format格式化字符串
  6. 第一周Linux微职位
  7. poj - problem 3070 Fibonacci 【矩阵 +快速幂】
  8. NSString 转为gbk
  9. cookie 以及session 的使用
  10. JAVA接口继承、抽象类等