ageControl.pageIndicatorTintColor = [UIColor blueColor]; // 没有选中的点点的颜色
_scrollPageControl.currentPageIndicatorTintColor = [UIColor yellowColor]; //当前点点的颜色
[_scrollPageControl addTarget:self action:@selector(scrollPageControlAction:)forControlEvents:UIControlEventValueChanged]; // 设置监听事件
_scrollPageControl.highlighted = YES;
[self.view addSubview:_scrollPageControl];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - 实现---scrollPageControlAction:监听事件
- (void)scrollPageControlAction:(UIPageControl *) sender {
//令UIScrollView做出相应的滑动显示
CGSize viewSize = _userGuideScrollView.frame.size;
CGRect rect = CGRectMake(sender.currentPage * viewSize.width, 0, viewSize.width, viewSize.height);
[_userGuideScrollView scrollRectToVisible:rect animated:YES];
}
#pragma mark - 重写----scrollViewDelegate中的代理方法 实现滑动
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
// 计算偏移量
int index = abs(scrollView.contentOffset.x / scrollView.frame.size.width);
// 根据偏移量来设置pageControl
_scrollPageControl.currentPage = index;
}
#pragma mark - 重写----dealloc方法
- (void)dealloc {
// 释放属性的内存
_scrollPageControl = nil;
_userGuideScrollView = nil;
}
二:UIScrollView的代理UIScrollViewDelegate
@protocol UIScrollViewDelegate<NSObject>
@optional
//只要滚动了就会触发
- (void)scrollViewDidScroll:(UIScrollView *)scrollView;
//缩放过程中不断调用该方法
- (void)scrollViewDidZoom:(UIScrollView *)scrollView NS_AVAILABLE_IOS(3_2);
//开始拖拽视图 调用该方法
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
//将要完成拖拽调用该方法
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset NS_AVAILABLE_IOS(5_0);
//完成拖拽调用该方法
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
//将开始降速时调用该方法
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;
//减速停止了时执行,手触摸时执行
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;
//滚动动画停止时执行,代码改变时出发,也就是setContentOffset改变时
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView;
//设置放大缩小的视图,要是uiscrollview的subview
- (nullable UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;
// 即将开始缩放时调用
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view NS_AVAILABLE_IOS(3_2);
//完成放大缩小时调用
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view atScale:(CGFloat)scale;
//如果你不是完全滚动到滚轴视图的顶部,你可以轻点状态栏,那个可视的滚轴视图会一直滚动到顶部,那是默认行为,你可以通过该方法返回NO来关闭它
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;
//已滚动顶部调用此方法
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView;
@end
知识点1:控件悬停效果;当scrollView往上拖拽到某一个位置的时候,控件(testView)悬停到某一个位置,当scrollView往下拉的时候,该控件(testView)又随着scrollView一起移动;
实现思路:当往上拖拽到一定位置的时候(通过计算偏移量来判断),让该控件(testView)添加到self.view上,并设置该控件(testView)的frame固定到该位置,当scrollView再次往回拖拽到该位置的时候,再让该控件(testView)再添加到scrollView上,成为scrollView的子控件
知识点2:顶部图片下拉放大效果;当scrollView