一、UIScrollView属性
1.常见的属性
// 移动的位置
@property(nonatomic) CGPoint contentOffset;
// 内容的大小
@property(nonatomic) CGSize contentSize;
// 四边扩展的边距
@property(nonatomic) UIEdgeInsets contentInset;
2.其他属性
// 弹簧效果
@property(nonatomic) BOOL bounces;
// 是否能滚动
@property(nonatomic,getter=isScrollEnabled) BOOL scrollEnabled;
// 是否隐藏水平滚动条
@property(nonatomic) BOOL showsHorizontalScrollIndicator;
// 是否隐藏垂直滚动条
@property(nonatomic) BOOL showsVerticalScrollIndicator;
3.UIScrollView的基本使用
1> 将需要展示的内容添加到UIScrollView中
2> 设置UIScrollView的contentSize属性
4.UIScrollView不能滚动的原因
1> 没有设置UIScrollView的contentSize
2> scrollEnabled = NO;
3> 没有接收到触摸事件 userInterfaceEnabled = NO
4> 没有取消autolayout功能
二、UIScrollView的代理
- UIScrollView中有一个属性是delegate目的是监听整个滚动过程,当发生滚动时会通知它的代理对象来执行相应的操作
1.成为代理的必要条件
1> 遵守UIScrollViewDelegate协议
2> 设置代理的对象
* 用代码实现: self.scrollview.delegate = self;
* 通过SB拖线
2.拖拽滚动的代理的方法
// 用户开始拖拽时调用
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
// 滚动到某个位置时调用
- (void)scrollViewDidScroll:(UIScrollView *)scrollView;
// 用户结束拖拽时调用
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
3.缩放的代理方法
// 返回需要缩放的视图控件
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;
// 准备开始缩放的调用
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view
// 正在缩放的时候调用
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
1> 缩放实现步骤
* 设置代理对象
* 设置minimumZoomScale:缩放的最小比例
* 设置maxmumZoomScale:放大的最大比例
* 实现代理的方法
三、UIPageControl的分页
- 分页:实现类似图片轮播器的效果
前提:要将UIScrollView的pageEnabled属性设置为YES,为了增强分页效果,配合使用UIPageControl
1.常见的属性
// 总页数
@property(nonatomic) NSInteger numberOfPages;
// 当前页
@property(nonatomic) NSInteger currentPage;
// 当有一页时,是否隐藏页码指示器
@property(nonatomic) BOOL hidesForSinglePage;
// 其他页码指示器的颜色
@property(nonatomic,retain) UIColor *pageIndicatorTintColor;
// 当前页码指示器的颜色
@property(nonatomic,retain) UIColor *currentPageIndicatorTintColor;
2.监听方法
[_pageControl addTarget:self action:@selector(pageChanged:) forControlEvents:UIControlEventValueChanged];
四、NSTimer的使用
作用:指定时间执行指定的任务,每隔一段时间执行指定的任务
1.开启一个定时任务
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget
selector:(SEL)aSelector
userInfo:(id)userInfo
repeats:(BOOL)yesOrNo;
// 每隔ti秒,调用一次aTarget的aSelector方法,yesOrNo决定了是否重复执行这个方法
2.取消任务
- (void)invalidate;
// 一旦定时器被停止了,就不能重现开启了,只能再创造一个定时器
3.将定时器添加到运行循环中
[[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
- 运行循环有两种模式:
默认的运行循环模式:NSDefaultRunLoopMode
监听滚动模式:NSRunLoopCommonModes