ios 图片自动轮播
生活随笔
收集整理的這篇文章主要介紹了
ios 图片自动轮播
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
ios 圖片自動輪播
#import "NYViewController.h"#define kImageCount 5@interface NYViewController () <UIScrollViewDelegate> @property (nonatomic, strong) UIScrollView *scrollView; @property (nonatomic, strong) UIPageControl *pageControl;@property (nonatomic, strong) NSTimer *timer; @end@implementation NYViewController//懶加載加載scrollView -(UIScrollView *)scrollView {if (_scrollView == nil) {_scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(10, 20, 300, 130)];_scrollView.backgroundColor = [UIColor redColor];[self.view addSubview:_scrollView];//contentSize//高度為0 只水平滾動self.scrollView.contentSize = CGSizeMake(kImageCount * _scrollView.bounds.size.width, 0);//取消彈簧效果_scrollView.bounces = NO;//取消滾動條_scrollView.showsHorizontalScrollIndicator = NO;//水平_scrollView.showsVerticalScrollIndicator = NO;//豎直//要分頁_scrollView.pagingEnabled = YES;//設(shè)置代理_scrollView.delegate = self;}return _scrollView; }-(UIPageControl *)pageControl {if (_pageControl == nil) {//分頁控件,本質(zhì)上和scrollView沒有任何關(guān)系,是兩個獨立的控件_pageControl = [[UIPageControl alloc]init];//總頁數(shù)_pageControl.numberOfPages = kImageCount;//控件尺寸CGSize size = [_pageControl sizeForNumberOfPages:kImageCount];_pageControl.bounds = CGRectMake(0, 0, size.width, size.height);_pageControl.center = CGPointMake(self.view.center.x, 130);//設(shè)置顏色_pageControl.pageIndicatorTintColor = [UIColor redColor];_pageControl.currentPageIndicatorTintColor = [UIColor blackColor];[self.view addSubview:_pageControl];//添加監(jiān)聽方法/**在OC中,絕大多數(shù)“繼承UIControl控件”,都可以監(jiān)聽UIControlEventValueChanged事件,只有button除外,button是點得,是touchup。。。*/[_pageControl addTarget:self action:@selector(pageChanged:) forControlEvents:UIControlEventValueChanged];}return _pageControl; }//分頁控件的監(jiān)聽方法 -(void)pageChanged:(UIPageControl *)page {//根據(jù)頁數(shù),調(diào)整滾動視圖中得圖片位置contentOffsetCGFloat x = page.currentPage * self.scrollView.bounds.size.width;[self.scrollView setContentOffset:CGPointMake(x, 0) animated:YES]; }- (void)viewDidLoad {[super viewDidLoad];//設(shè)置圖片for (int i = 0; i<kImageCount; i++) {NSString *imageName = [NSString stringWithFormat:@"img_%02d", i+1 ];UIImage *image = [UIImage imageNamed:imageName];UIImageView *imageView = [[UIImageView alloc] initWithFrame: self.scrollView.bounds];imageView.image = image;[self.scrollView addSubview:imageView];}//計算imageView的位置[self.scrollView.subviews enumerateObjectsUsingBlock:^(UIImageView *imageView, NSUInteger idx, BOOL *stop) {//調(diào)整x =》 origin =》frameCGRect frame = imageView.frame;frame.origin.x = idx * frame.size.width;imageView.frame = frame;}];//分頁初始頁數(shù)為0self.pageControl.currentPage = 0;//啟動時鐘 [self startTimer];}/**啟動時鐘*/ -(void)startTimer {self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(updateTimer) userInfo:nil repeats:YES];//添加運行循環(huán) [[NSRunLoop currentRunLoop]addTimer:self.timer forMode:NSRunLoopCommonModes];}-(void)updateTimer {//頁號發(fā)生變化//(當(dāng)前頁數(shù) + 1) % 總頁數(shù)int page = (self.pageControl.currentPage+1) % kImageCount;self.pageControl.currentPage = page;//調(diào)用監(jiān)聽方法。讓滾動視圖滾動 [self pageChanged:self.pageControl]; }#pragma mark - scrollView的代理方法//滾動視圖停下來 -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {// 停下來的當(dāng)前頁數(shù),通過contentOffset獲取當(dāng)前偏移量NSLog(@"%@",NSStringFromCGPoint(scrollView.contentOffset));//計算頁數(shù)int page = scrollView.contentOffset.x/scrollView.bounds.size.width;self.pageControl.currentPage = page;}/**抓住圖片時,停止時鐘,松手后,開啟時鐘*/ -(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {//停止時鐘,停止后就不能在使用,如果要啟用時鐘,需要重新實例化 [self.timer invalidate]; }-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {//啟動時鐘 [self startTimer];} @end
?
posted on 2015-07-30 17:48 高手superior 閱讀(...) 評論(...) 編輯 收藏轉(zhuǎn)載于:https://www.cnblogs.com/jackson-leung/p/4690080.html
總結(jié)
以上是生活随笔為你收集整理的ios 图片自动轮播的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 割双眼皮价格 双眼皮手术多少钱
- 下一篇: Android环境搭建和Android