一、什么是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中滚动条也是控件,在类似以下案例中,要注意滚动条的存在

代码示例:

 - (void)viewDidLoad {
[super viewDidLoad];
// 定义一行中的列数
int count = ;
CGFloat w = ;
CGFloat h = ;
CGRect rect;
for (int i = ; i < ; i++) { // 循环加控件
UIView *view = [[UIImageView alloc] init];
view.backgroundColor = [UIColor redColor];
NSInteger row = i / count; // 所在行
NSInteger cols = i % count; // 所在列
CGFloat x = cols * (w + ); // 列决定x
CGFloat y = row * (h + ); // 行决定y
view.frame = CGRectMake(x, y, w, h);
[self.scrollView addSubview:view];
if (i == ) {
// 将最后一个格子的rect记录下来
rect = view.frame;
}
}
// 最好不要直接拿到所谓的最后一个控件,来算得scrollView的可视区的高度,因为scrollView中多了两个滚动条控件,最后拿到的控件不一定是自己想要的
// UIView *lastView = [self.scrollView.subviews lastObject];
// CGFloat contentH = lastView.frame.origin.y + lastView.frame.size.height;
// 或者将滚动条的这两个属性设置为NO,但是此方法用户体验不好
// self.scrollView.showsHorizontalScrollIndicator = NO;
// self.scrollView.showsVerticalScrollIndicator = NO;
// 获得y坐标的最大值
CGFloat contentH = CGRectGetMaxY(rect);
// 设置scrollview的可视范围
self.scrollView.contentSize = CGSizeMake(, contentH);
}

四、UIScrollView中的代理

  *成为代理的条件

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

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

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

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

  

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

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

 #pragma mark - <UIScrollViewDelegate> 四个代理方法的介绍

 - (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
// 只要滚动就调用
} -(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
// 开始拖拽的时候调用
} -(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
// 结束拖拽的时候调用
} -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
// (减速完毕)停止滚动的时候调用
}

五、内容缩放

    

最新文章

  1. 推荐13款javascript模板引擎
  2. [IOS 开发] 自定义(重写) UITableViewCell的高亮背景色
  3. 【POJ】2891 Strange Way to Express Integers
  4. Linguistic corpora 种子语料库-待分析对象-分析与更新语料库
  5. 《深度探索C++对象模型》3
  6. css之padding,marging
  7. SAS 5/iR Adapter 驱动下载
  8. SpringMVC+SwfUpload进行多文件同时上传
  9. docker 镜像管理
  10. solaris11.2下编译QT-配置命令
  11. MySQL 复制
  12. 命令导入导出oracle库
  13. 0_Simple__simpleAssert + 0_Simple__simpleAssert_nvrtc
  14. JavaScript中事件绑定的三种方式
  15. RAID部署
  16. SQL学习笔记---常用命令
  17. 如何在C#中使用Dapper(译)
  18. bootstrap 强调相关的类
  19. Cocos2d-X开发教程-捕鱼达人 Cocos2-x development tutorial - fishing talent
  20. weblogic threadpool has stuck threads

热门文章

  1. IOS 内存优化和调试技巧
  2. 标头“Vary:Accept-Encoding”指定方法[转]
  3. 转 web前端性能分析--实践篇
  4. Android 中 values/strings.xml 取值
  5. vue v-model 与 组件化的表单组件如何沟通
  6. Spring中xml文件配置也可以配置容器list、set、map
  7. Spring依赖注入构造器注入(通过构造函数注入)
  8. unity5, Configurable Joint: Anchor, Connected Anchor, Auto Configure Connected Anchor
  9. 关于locate这个NB命令我不得不深入的学习
  10. angular学习笔记(十四)-$watch(4)