UIScrollView 几乎所有的属性和方法
- - (void)viewDidLoad {
- [super viewDidLoad];
- // Do any additional setup after loading the view, typically from a nib.
- UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:kScreenBounds];
- scrollView.backgroundColor = [UIColor yellowColor];
- [self.view addSubview:scrollView];
- UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
- button.backgroundColor = [UIColor blueColor];
- button.frame = CGRectMake(, , kScreenWidth - , );
- [scrollView addSubview:button];
- // 1. 默认 CGSizeZero == CGSizeMake(0, 0)
- // contentSize 设置可以滚动的范围
- scrollView.contentSize = CGSizeMake(, );
- // 2. 默认 CGPointZero
- // contentOffset 偏移量, 滚动的位置
- // 不设置contentSize, contentOffset也可以改变
- // 问题: 改变contentOffset什么变了?
- // 答案: 改变contentOffset, 实质上是对scrollView的bounds进行了改变.(改变子视图的坐标)
- NSLog(@"scrollView frame is : %@", NSStringFromCGRect(scrollView.frame));
- NSLog(@"scrollView bounds is : %@", NSStringFromCGRect(scrollView.bounds));
- scrollView.contentOffset = CGPointMake(, );
- NSLog(@"scrollView frame is : %@", NSStringFromCGRect(scrollView.frame));
- NSLog(@"scrollView bounds is : %@", NSStringFromCGRect(scrollView.bounds));
- // 3. contentInset
- // 添加滚动区域四周的滚动范围
- // UIEdgeInsets age = {10, 10, 10, 10};
- scrollView.contentInset = UIEdgeInsetsMake(, , , );
- // 4. directionalLockEnabled
- // 锁定垂直或水平滚动(45度角, 锁会失效)
- scrollView.directionalLockEnabled = YES;
- // 5. bounces 回弹效果
- // 边缘弹动动画关闭 NO
- // scrollView.bounces = NO;
- // 6. alwaysBounceVertical 在没有垂直方向的滚动范围时(0), 保证垂直方向的回弹效果
- scrollView.alwaysBounceVertical = YES;
- // 7. alwaysBounceHorizontal 在没有水平方向的滚动范围时(0), 保证垂直方向的回弹效果
- scrollView.alwaysBounceHorizontal = YES;
- // 8. pagingEnabled 按页滚动
- scrollView.pagingEnabled = YES;
- // 9. scrollEnabled 滚动视图能否滚动, 默认为YES, NO(不可以滚)
- scrollView.scrollEnabled = YES;
- // 10. showsHorizontalScrollIndicator 是否显示水平滚动指示器
- scrollView.showsHorizontalScrollIndicator = YES;
- // 11. showsVerticalScrollIndicator 是否显示垂直滚动的指示器
- scrollView.showsVerticalScrollIndicator = YES;
- // 12. 滚动指示器的边距
- scrollView.scrollIndicatorInsets = UIEdgeInsetsMake(, , , );
- // 13. indicatorStyle 滚动指示器的颜色(深色背景丶浅色背景)
- scrollView.indicatorStyle = UIScrollViewIndicatorStyleBlack;
- // 14.
- // scrollView.tracking 用户有没有开始拖动
- // scrollView.tracking
- // scrollView.dragging 用户是否正在拖动
- // scrollView.dragging
- // scrollView.decelerating 是否减速中
- // scrollView.decelerating
- // 14. scrollsToTop 滚动视图, 双击状态栏手势是否存在
- scrollView.scrollsToTop = NO;
- // 15. 代理
- scrollView.delegate = self;
- // 16. 键盘消失模式(一般用这个UIScrollViewKeyboardDismissModeOnDrag)
- scrollView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;
- // 测试:
- UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(, , kScreenWidth - , )];
- textField.backgroundColor = [UIColor cyanColor];
- [scrollView addSubview:textField];
- // 17. 缩放系数
- // 如果想进行视图放大缩小, 必须实现viewForZoomingInScrollview:
- scrollView.minimumZoomScale = ;
- scrollView.maximumZoomScale = ;
- }
- // 与其想要缩放的子视图绑定, scrollView的contentSize会跟随这个子视图改变
- - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
- return scrollView.subviews.firstObject;
- }
- // 滚动视图滚动, 就会执行
- - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
- // tracking 用户触摸
- if (scrollView.tracking) {
- NSLog(@"正在拖动滚动");
- } else {
- NSLog(@"自己滚动中");
- }
- // dragging 用户开始滑动
- if (scrollView.dragging) {
- NSLog(@"");
- }
- // decelerating 用户触摸结束
- if (scrollView.decelerating) {
- NSLog(@"");
- }
- }
- // 将要开始拖拽
- - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
- // NSLog(@"开始拖拽");
- }
- // 将要结束拖拽
- - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
- }
- // 将要开始进行减速
- - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {
- // NSLog(@"开始减速");
- }
- // 已经结束减速
- - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
- //NSLog(@"结束减速");
- }
- - (void)didReceiveMemoryWarning {
- [super didReceiveMemoryWarning];
- // Dispose of any resources that can be recreated.
- }
UIScrollView 几乎所有的属性和方法的更多相关文章
- PHP 面向对象编程和设计模式 (2/5) - 静态变量、属性和方法及延迟绑定
PHP高级程序设计 学习笔记 2014.06.10 Static(静态)关键字用来定义静态方法和属性,static 也可用于定义静态变量以及后期静态绑定. 1.静态变量 static variable ...
- 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间
[源码下载] 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 作者:webabcd 介绍速战速决 之 PHP 动态地创 ...
- String类型的属性和方法
× 目录 [1]属性 [2]对象通用方法 [3]访问字符方法[4]字符串拼接[5]创建子串方法[6]大小写转换[7]查找子串位置[8]正则匹配方法[9]去除首尾空格[10]字符串比较 前面的话 前面已 ...
- python 类属性与方法
Python 类属性与方法 标签(空格分隔): Python Python的访问限制 Python支持面向对象,其对属性的权限控制通过属性名来实现,如果一个属性有双下划线开头(__),该属性就无法被外 ...
- Node.js process 模块常用属性和方法
Node.js是常用的Javascript运行环境,本文和大家发分享的主要是Node.js中process 模块的常用属性和方法,希望通过本文的分享,对大家学习Node.js http://www.m ...
- UIKit的外观属性及方法汇总
本文授权转载,作者:楚天舒(简书) 开发中经常会碰到要设置UI的某个生僻的外观属性,虽然在头文件中都能查到,但一是每个控件的头文件比较分散繁杂,二是每个头文件里有太多不用到的方法和属性,所以这里将UI ...
- 理解JAVA - 面向对象(object) - 属性,方法
理解JAVA - 面向对象(object) - 属性,方法 多态的体现: 向上造型,父类接收子类对象:向上造型: 从父类角度看不到子类独有的方法:面向对象,人类认知世界的方式:生活中每天都 ...
- [OC][转]UITableView属性及方法大全
Tip: UITableView属性及方法大全 (摘录地址) p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 14.0px; font: 1 ...
- html5 audio的语法以及属性和方法
使用语法<audio src="song.mp3" controls="controls" loop="loop" autoplay= ...
随机推荐
- 20165301 2017-2018-2 《Java程序设计》第四周学习总结
20165301 2017-2018-2 <Java程序设计>第四周学习总结 教材学习内容总结 第五章:子类与继承 一个类只能有一个父类,但是可以有若干个子类. 子类的继承性 子类和父类在 ...
- SGU 204. Little Jumper
204. Little Jumper time limit per test: 0.5 sec. memory limit per test: 65536 KB input: standard out ...
- python3环境下面bytes类型转换成字典类型实例
场景:通过http://tool.chinaz.com/tools/httptest.aspx在线HTTP接口测试工具获取接口的返回信息 { "status": 0, " ...
- spring boot 笔记
1.不能访问非启动类中的@RequestMapping 路径: 启动类注解 1.@Controller @EnableAutoConfiguration @ComponentScan 或 2.@Spr ...
- Codeforces Round #278 (Div. 1) D - Conveyor Belts 分块+dp
D - Conveyor Belts 思路:分块dp, 对于修改将对应的块再dp一次. #include<bits/stdc++.h> #define LL long long #defi ...
- python爬虫实战(四)--------豆瓣网的模拟登录(模拟登录和验证码的处理----scrapy)
在利用scrapy框架爬各种网站时,一定会碰到某些网站是需要登录才能获取信息. 这两天也在学习怎么去模拟登录,通过自己码的代码和借鉴别人的项目,调试成功豆瓣的模拟登录,顺便处理了怎么自动化的处理验证码 ...
- 深度学习基础系列(一)| 一文看懂用kersa构建模型的各层含义(掌握输出尺寸和可训练参数数量的计算方法)
我们在学习成熟网络模型时,如VGG.Inception.Resnet等,往往面临的第一个问题便是这些模型的各层参数是如何设置的呢?另外,我们如果要设计自己的网路模型时,又该如何设置各层参数呢?如果模型 ...
- css加载方式link和@import的区别!
本质上,这两种方式都是为了加载CSS文件,但还是存在着细微的差别. 1. 老祖宗的差别.link属于XHTML标签,而@import完全是CSS提供的一种方式. link标签除了可以加载CSS外,还可 ...
- 关联的CURD
在保存的前面必须先建立好关联.但是默认情况下还是不会自动保存,如果保存会出错. Cascade all所有关联的所有持久化都是级联到另一个对象.保存这个对象的时候关联的对象自动保存. Cascade只 ...
- XamarinForms教程构建XamarinForms开发环境
构建XamarinForms开发环境 所谓Xamarin.Forms的开发环境,就是指在基本硬件和数字软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件,简称SDE.对于任何的程 ...