- (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.
}

最新文章

  1. CodeIgniter 3 源码学习笔记《一》
  2. DNS域传送漏洞利用
  3. HDU 2546(01背包)
  4. Flume与Kafka集成
  5. 【BZOJ 1202】 [HNOI2005]狡猾的商人
  6. vim高亮显示
  7. [置顶] Objective-C开发环境介绍以及Cocoa,以及第一个程序
  8. 基于struct2完整的用户登录
  9. ajax编程**
  10. 配置python+mod_wsgi+apache 时 在浏览器中访问服务器时报错:Invalid HTTP_HOST header: 'XXXXX'. You may need to add u'XXXXX' to ALLOWED_HOSTS,在setting.py中添加‘*”无效的原因
  11. 外观模式 门面模式 Facade 结构型 设计模式(十三)
  12. B-Tree和B+Tree的区别
  13. Java链表基本操作和Java.util.ArrayList
  14. HTTP状态码分类
  15. 变量的值与判断的结果有关,使用Set Variable If
  16. 牛客国庆集训派对Day2
  17. Class_fourth
  18. 【ARM】2410裸机系列-按键查询式控制led
  19. Kotlin语言学习笔记(7)
  20. [JLOI2013]地形生成[组合计数]

热门文章

  1. Adding Completion to (interactive)
  2. Android 下使用 JSON 实现 HTTP 请求,外加几个示例!
  3. AC日记——松江1843路 洛谷七月月赛
  4. js 利用事件委托解决mousedown中的click
  5. controller中,Failed to Initialize. Reason: TimeOut虚拟用花初始化超时
  6. Codeforces Round #496 (Div. 3) F - Berland and the Shortest Paths
  7. 湖南大学ACM程序设计新生杯大赛(同步赛)C - Do you like Banana ?
  8. Java Web开发——HTML CSS JavaScript 杂记
  9. Spring Cloud Config 使用总结
  10. Kali Linux缺少ifconfig命令