您的位置:首页 > 产品设计 > UI/UE

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];

}

具体代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: