UIScrollViewAndUIPageController结合使用
2016-01-27 22:32
579 查看
.h文件代码
@interface ViewController : UIViewController<UIScrollViewDelegate>
{
UIScrollView *_scrollView;
UIPageControl *_pageControl;
NSTimer *_timer;
int _speed;
}
@end
.m文件代码
- (void)viewDidLoad
{
[super viewDidLoad];
_scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 20, 320, 200)];
_scrollView.contentSize = CGSizeMake(5 *320, 200);
for (int a = 0; a < 5; a++)
{
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(a *320, 0, 320, 200)];
NSString *imageStr = [NSString stringWithFormat:@"image%d.jpg",a+1];
imageView.image = [UIImage imageNamed:imageStr];
[_scrollView addSubview:imageView];
}
_scrollView.pagingEnabled = YES;
_scrollView.bounces = NO;
_scrollView.delegate = self;
[self.view addSubview:_scrollView];
_pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(100, 200, 140, 20)];
_pageControl.numberOfPages = 5;
_pageControl.currentPageIndicatorTintColor = [UIColor yellowColor];
_pageControl.pageIndicatorTintColor = [UIColor blackColor];
[_pageControl addTarget:self action:@selector(valueChange) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:_pageControl];
设置定时器,使图片自动滚动
_timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
}
- (void)onTimer
{
if (_pageControl.currentPage == 0)
{
_speed = 1;
}
if (_pageControl.currentPage == 4)
{
_speed = -1;
}
_pageControl.currentPage = _pageControl.currentPage + _speed;
[_scrollView setContentOffset:CGPointMake(_pageControl.currentPage *320, 0) animated:YES];
}
当拖动图片的时候,使pageControl的当前显示点一起改变
- (void)valueChange
{
[_scrollView setContentOffset:CGPointMake(_pageControl.currentPage *320, 0) animated:YES];
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
//[_timer invalidate];
// _timer = nil;
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
}
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
//在scrollView已经结束减速的时候, 更改pageControl.currentPage属性的值;
//根据scrollView的偏移量/320, 计算当前小圆点所处于的位置;
_pageControl.currentPage = _scrollView.contentOffset.x/320;
NSLog(@"_scrollView.contentOffSet = %f",_scrollView.contentOffset.x);
NSLog(@"_pageControl.currentPage = %d",_pageControl.currentPage);
_timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
}
具体代码
@interface ViewController : UIViewController<UIScrollViewDelegate>
{
UIScrollView *_scrollView;
UIPageControl *_pageControl;
NSTimer *_timer;
int _speed;
}
@end
.m文件代码
- (void)viewDidLoad
{
[super viewDidLoad];
_scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 20, 320, 200)];
_scrollView.contentSize = CGSizeMake(5 *320, 200);
for (int a = 0; a < 5; a++)
{
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(a *320, 0, 320, 200)];
NSString *imageStr = [NSString stringWithFormat:@"image%d.jpg",a+1];
imageView.image = [UIImage imageNamed:imageStr];
[_scrollView addSubview:imageView];
}
_scrollView.pagingEnabled = YES;
_scrollView.bounces = NO;
_scrollView.delegate = self;
[self.view addSubview:_scrollView];
_pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(100, 200, 140, 20)];
_pageControl.numberOfPages = 5;
_pageControl.currentPageIndicatorTintColor = [UIColor yellowColor];
_pageControl.pageIndicatorTintColor = [UIColor blackColor];
[_pageControl addTarget:self action:@selector(valueChange) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:_pageControl];
设置定时器,使图片自动滚动
_timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
}
- (void)onTimer
{
if (_pageControl.currentPage == 0)
{
_speed = 1;
}
if (_pageControl.currentPage == 4)
{
_speed = -1;
}
_pageControl.currentPage = _pageControl.currentPage + _speed;
[_scrollView setContentOffset:CGPointMake(_pageControl.currentPage *320, 0) animated:YES];
}
当拖动图片的时候,使pageControl的当前显示点一起改变
- (void)valueChange
{
[_scrollView setContentOffset:CGPointMake(_pageControl.currentPage *320, 0) animated:YES];
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
//[_timer invalidate];
// _timer = nil;
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
}
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
//在scrollView已经结束减速的时候, 更改pageControl.currentPage属性的值;
//根据scrollView的偏移量/320, 计算当前小圆点所处于的位置;
_pageControl.currentPage = _scrollView.contentOffset.x/320;
NSLog(@"_scrollView.contentOffSet = %f",_scrollView.contentOffset.x);
NSLog(@"_pageControl.currentPage = %d",_pageControl.currentPage);
_timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
}
具体代码
相关文章推荐
- UI控件初始化的调用方法。
- Flex Builder cannot locate the required debug version of the Flash Player problem
- HDOJ1159 - Common Subsequence
- iOS UIView类扩展,直接访问属性 —— HERO博客
- HDOJ4908 - BestCoder Sequence
- UVA 11235 Frequent values RMQ
- UISlider的基本使用方法
- ERROR! The server quit without updating PID file (/usr/local/var/mysql/ericliu.pid).
- spark学习4之集群上直接用scalac编译.scala出现的MissingRequirementError问题(已解决)
- 细说UI线程和Windows消息队列
- Errors occurred during the build
- Union-Find(并查集): Quick find算法
- layoutSubviews在什么情况下调用
- Divide and conquer:Garland(POJ 1759)
- Hibernate NamedQuery like 模糊查询的写法
- String \StringBuffer \StringBuilder之间的区别
- IOS - UI - 手势触摸事件、手势识别、摇晃事件、耳机线控
- 第三十一篇:SOUI布局之相对于特定兄弟窗口
- - (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font lineBreakMode:(NSLineBreakMode)lineBreakMode NS_DEPRECATED_IOS(2_0, 7_0, "Use -drawInRect:withAttributes:")
- Anger Management Guide For Managers