基本使用UIScrollView使用
UIScrollView 介绍
1>UIScrollView是一种控件,继承自UIView
2>用来实现”滚动”和”缩放”的控件UIScrollView设置滚动的基本步骤(进行滚动和缩放的是内容)
1>创建一个UIScrollView
2>向UIScrollView中添加内容(UIImageView)
3>设置UIScrollView内容的大小(contenSize)UIScrollView实现图片滚动
1>拖一个UIScrollView到屏幕
2>拖一个UIImageView到UIScrollView中
3>设置UIImageView的显示图片,并根据实际设置的图片的大小修改UIImageView的大小
4>在控制器的viewDidLoad方法中,设置UIScrollView的contenSize为图片的实际大小(UIImageView的Image属性的size)UIScrollView无法滚动可能的原因及解决办法分析
- 没有设置contenSize
- scrollEnabled = NO
- 没有接收到触摸事件: userInteractionEnabled = NO
没有取消autolayout功能等原因
- UIScrollView的 frame.size 与 contentSize 的区别
- frame.size指的是: UIScrollView的可视区域的大小, UIScrollView本身的大小
- contentSize指的是: UIScrollView中所包含的内容的大小(要滚动的实际内容的大小)
- 总结: 在UIScrollView的frame.size这么大的范围内, 要显示contentSize这么大的内容。是否需要滚动, 取决于contentSize是否比frame.size大
UIScrollView常见属性
* contentSize (内容尺寸)
- contentOffset(内容偏移量,CGPoint类型)
含义:
1> 当UIScrollView内部的内容滚动时, 内容相对于UIScrollView左上角的偏移
2> 另一种理解方式: 内容滚动到了什么位置
** 注意: 可以通过代码来设置这个属性的值, 就相当于是通过代码实现滚动了(无需用户手指来触摸滚动)
contentInset(内容的内边距,UIEdgeInset类型)
含义:
1> 设置UIScrollView的内容在拖动以后, 内容距离UIScrollView的内边距。(联想按钮的内边距属性: Inset)
2> 另一种思考方式: 想象成把内容加大了, 在内容本身的周围加了一圈”外边距”。UIScrollView 其他属性
@property(nonatomic) BOOL bounces;
设置UIScrollView是否需要弹簧效果
@property(nonatomic,getter=isScrollEnabled) BOOL scrollEnabled;
设置UIScrollView是否能滚动
@property(nonatomic) BOOL showsHorizontalScrollIndicator;
是否显示水平滚动条
@property(nonatomic) BOOL showsVerticalScrollIndicator;
是否显示垂直滚动条
- 代理设计模式在 UIScrollView 中的应用
- 通过代理来监听事件
设置代理可以通过”拖线”的方式或者是代码的方式
通过”代码”和”拖线”的方式设置代理
- 设置代理的基本步骤:
-
- 为scroll view 设置delegate属性(设置代理对象)
-
- 让代理对象遵守代理协议
-
- 让代理对象, 实现协议中的方法
UIScrollView常用代理方法
// 用户开始拖拽时调用
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
// 滚动到某个位置时调用
- (void)scrollViewDidScroll:(UIScrollView *)scrollView;
// 用户结束拖拽时调用
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
// 用户使用捏合手势时调用
- (UIView )viewForZoomingInScrollView:(UIScrollView )scrollView;
即将开始缩放的时候调用
- (void)scrollViewWillBeginZooming:(UIScrollView )scrollView withView:(UIView )view
正在缩放的时候调用
(void)scrollViewDidZoom:(UIScrollView *)scrollView
缩放完毕的时候调用
- (void)scrollViewDidEndZooming::(UIScrollView *)scrollView
- 代理设计模式的总结(UIAlertView、UIActionSheet、UIScrollView都是通过代理来监听事件的)