首页 > 系统 > iOS > 正文

iOS实现图片自动切换效果

2020-07-26 01:29:18
字体:
来源:转载
供稿:网友

本文实例为大家分享了iOS实现图片自动切换的具体代码,供大家参考,具体内容如下

#import "ViewController.h"#define ImageViewCount 5 @interface ViewController ()<UIScrollViewDelegate> @property (weak, nonatomic) IBOutlet UIScrollView *imageScrollView;@property (weak, nonatomic) IBOutlet UIPageControl *imageViewPageControl;@property (strong, nonatomic) NSTimer *timer;@end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad];  [self addImageView2ScrollView]; self.imageScrollView.contentSize = CGSizeMake(self.imageScrollView.frame.size.width * ImageViewCount, 0);  self.imageScrollView.delegate = self; self.imageScrollView.pagingEnabled = YES;//UIScrollView支持拖动分页 self.imageViewPageControl.numberOfPages = ImageViewCount;  [self addScrollTimer];} - (void)rotatePic{ int currentPageIndex = self.imageViewPageControl.currentPage; if(++currentPageIndex == 5){  currentPageIndex = 0; } CGFloat offsetX = currentPageIndex * self.imageScrollView.frame.size.width; [UIView animateWithDuration:1 animations:^{  self.imageScrollView.contentOffset = CGPointMake(offsetX, 0); }];} /**添加图片到imageScrollView*/- (void)addImageView2ScrollView{ CGFloat imageWidth = self.imageScrollView.frame.size.width; CGFloat imageHeight = self.imageScrollView.frame.size.height; for(int i = 0;i <= ImageViewCount;i++){  UIImageView *imageInScroll = [[UIImageView alloc] init];  imageInScroll.frame = CGRectMake(i * imageWidth, 0, imageWidth, imageHeight);  imageInScroll.image = [UIImage imageNamed:[NSString stringWithFormat:@"img_%02d",i + 1]];  [self.imageScrollView addSubview:imageInScroll]; }} // 正滚动时执行- (void)scrollViewDidScroll:(UIScrollView *)scrollView{ CGFloat offX = self.imageScrollView.contentOffset.x;//(0,0)距离content内部左上顶点的x轴长度 NSLog(@"~~~~~~~%f ^^^^^^%f", offX, self.imageScrollView.frame.size.width); int currentPageIndex = (offX + .5f * self.imageScrollView.frame.size.width) / self.imageScrollView.frame.size.width; self.imageViewPageControl.currentPage = currentPageIndex;} - (void)addScrollTimer{ self.timer = [NSTimer timerWithTimeInterval:2 target:self selector:@selector(rotatePic) userInfo:nil repeats:YES]; [[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];} - (void)removeScrollTimer{ [self.timer invalidate];//释放定时器 self.timer = nil;} // 开始准备滚动时执行 移除定时滚动操作- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{ NSLog(@"~~~scrollViewWillBeginDragging"); [self removeScrollTimer];} // 结束滚动后执行 添加定时滚动操作- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{ NSLog(@"~~~scrollViewDidEndDragging"); [self addScrollTimer];}@end

UIScrollView的运用,以上代码中有详细注释,需注意2点:

1.注意设置contentSize属性。其中contentSize表示scroll内容尺寸大小

2.注意设置代理UIScrollViewDelegate,才可调用其中的方法

对于定时器NSTimer的运用需注意

1.在线程的loop中添加定时器

2.注意使用完成回收NSTimer

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表