- (nullable UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return self.imageView;
}
- (void)scrollViewDidScroll {
NSLog(@"正在滚动");
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
NSLog(@"开始滚动");
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
NSLog(@"结束滚动");
}
一个简单的例子:
#import "ViewController.h"
@interface ViewController () <UIScrollViewDelegate>
{
NSTimer *timer;
}
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
int totalCount = 5;
CGFloat imageW = self.scrollView.frame.size.width;
for (int i = 0; i < totalCount; i++) {
NSString *string = [NSString stringWithFormat:@"%d",i+1];
UIImageView *imageView = [[UIImageView alloc] init];
imageView.image = [UIImage imageNamed:string];
CGFloat imageX = i * self.scrollView.frame.size.width;
CGFloat imagaY = 0;
CGFloat imageH = self.scrollView.frame.size.height;
imageView.frame = CGRectMake(imageX, imagaY, imageW, imageH);
[self.scrollView addSubview:imageView];
}
self.scrollView.contentSize = CGSizeMake(totalCount * imageW , 0);
self.scrollView.showsHorizontalScrollIndicator = NO;
self.scrollView.pagingEnabled = YES;
self.pageControl.numberOfPages = totalCount;
self.pageControl.currentPage = 0;
self.scrollView.delegate = self;
timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(autoScr0ll) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
}
- (void)autoScr0ll {
int totalCount = 5;
int page = self.pageControl.currentPage >= totalCount-1 ? 0: self.pageControl.currentPage+1;
CGFloat offSetX = page * self.scrollView.frame.size.width;
self.scrollView.contentOffset = CGPointMake(offSetX, 0);
}
#pragma mark ---- 代理方法 ----
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGPoint contentOffset = scrollView.contentOffset;
int page = contentOffset.x / scrollView.frame.size.width;
self.pageControl.currentPage = page;
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
[timer invalidate];
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(autoScr0ll) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
@end
效果图