1.没有设置contentSize 2.scrollEnabled属性 = NO 3.userInteractionEnabled属性 = NO
1. enabled: 表明控件不可用 2. userInteractionEnabled: 表明控件不能够和用户交互, 也就是不能响应用户的操做
[self.scrollView.subviews lastObject];
oop
self.scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
ui
self.scrollView.bounces = YES;
atom
self.scrollView.alwaysBounceVertical = YES;
线程
self.scrollView.alwaysBounceHorizontal = YES;
代理
sc.contentOffset = CGPointMake(100, 0);
code
self.sc.contentSize = CGSizeMake(IMAGE_COUNT * width, height);
orm
self.sc.contentSize = CGSizeMake(width, IMAGE_COUNT * height);
对象
self.sc.bounces = NO;
继承
self.sc.pagingEnabled = YES;
事件
pagingEnabled
实现分页的本质, 是按照UIScrollView的宽度或者高度来分页的
UIScrollView的宽度就是一页的宽度
当B对象发生一些变化想通知A对象, 那么可让A成为B的代理
self.sc.delegate = self;
只要成为了UIScrollView的代理, 遵照代理协议, 实现协议中的方法
当UIScrollView发生一些变化的时候, 系统就会自动调用这些代理方法
- scrollViewDidScroll
方法何时调用?
- 只要UIScrollView滚动了, 系统就会自动调用
- scrollViewWillBeginDragging
- (void)scrollViewDidEndDragging:(nonnull UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
UIScrollView已经中止减速了
- (void)scrollViewDidEndDecelerating:(nonnull UIScrollView *)scrollView
因此: 之后要判断UIScrollView是否中止滚动, 须要同时重写两个方法
scrollViewDidEndDragging
scrollViewDidEndDecelerating
```self.sc.maximumZoomScale = 2.0;``` ``` self.sc.minimumZoomScale = 0.5;想要缩放, 必须明确的告诉UISrollView要缩放哪个控件
- (nullable UIView *)viewForZoomingInScrollView:(nonnull UIScrollView *)scrollView { return self.iv; }
和scrollViewDidScroll同样, 只要缩放一点点就会调用
- (void)scrollViewDidZoom:(nonnull UIScrollView *)scrollView { NSLog(@"%s", __func__); }
缩放结束时调用
- (void)scrollViewDidEndZooming:(nonnull UIScrollView *)scrollView withView:(nullable UIView *)view atScale:(CGFloat)scale { NSLog(@"%s", __func__); }
self.sc.pagingEnabled = YES;
pagingEnabled
实现分页的本质, 是按照UIScrollView的宽度或者高度来分页的
UIScrollView的宽度就是一页的宽度
设置未显示的页码颜色
self.pageControl.pageIndicatorTintColor = [UIColor blackColor];
设置当前显示的页码颜色
self.pageControl.currentPageIndicatorTintColor = [UIColor purpleColor];
设置当前页码
self.pageControl.currentPage = currnetPage;
经过KVC给UIPageControl的私有属性赋值, 设置自定义图片
[self.pageControl setValue:[UIImage imageNamed:@"current"] forKeyPath:@"_currentPageImage"];
[self.pageControl setValue:[UIImage imageNamed:@"other"] forKeyPath:@"_pageImage"];
NSTimer应该是weak, 由于只要建立一个NSTimer对象, 该对象就会被主线程强引用
@property (weak, nonatomic) NSTimer *timer;
scheduledTimerWithTimeInterval:
建立一个定时器, 而且当即但是计时
TimeInterval:
间隔时间
target:
调用谁的方法
selector:
调用什么方法
userInfo:
须要传递什么参数
repeats:
是否重复只要调用scheduled方法建立一个NSTimer对象, 系统就会自动将NSTimer添加到主线程中
self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(nextPage:) userInfo:@" " repeats:YES];
主线程在处理其它事件的时候, 分一点时间来处理NSTimer
[[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];