ios 图片自动轮播
生活随笔
收集整理的這篇文章主要介紹了
ios 图片自动轮播
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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;//設置代理_scrollView.delegate = self;}return _scrollView; }-(UIPageControl *)pageControl {if (_pageControl == nil) {//分頁控件,本質上和scrollView沒有任何關系,是兩個獨立的控件_pageControl = [[UIPageControl alloc]init];//總頁數_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);//設置顏色_pageControl.pageIndicatorTintColor = [UIColor redColor];_pageControl.currentPageIndicatorTintColor = [UIColor blackColor];[self.view addSubview:_pageControl];//添加監聽方法/**在OC中,絕大多數“繼承UIControl控件”,都可以監聽UIControlEventValueChanged事件,只有button除外,button是點得,是touchup。。。*/[_pageControl addTarget:self action:@selector(pageChanged:) forControlEvents:UIControlEventValueChanged];}return _pageControl; }//分頁控件的監聽方法 -(void)pageChanged:(UIPageControl *)page {//根據頁數,調整滾動視圖中得圖片位置contentOffsetCGFloat x = page.currentPage * self.scrollView.bounds.size.width;[self.scrollView setContentOffset:CGPointMake(x, 0) animated:YES]; }- (void)viewDidLoad {[super viewDidLoad];//設置圖片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) {//調整x =》 origin =》frameCGRect frame = imageView.frame;frame.origin.x = idx * frame.size.width;imageView.frame = frame;}];//分頁初始頁數為0self.pageControl.currentPage = 0;//啟動時鐘 [self startTimer];}/**啟動時鐘*/ -(void)startTimer {self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(updateTimer) userInfo:nil repeats:YES];//添加運行循環 [[NSRunLoop currentRunLoop]addTimer:self.timer forMode:NSRunLoopCommonModes];}-(void)updateTimer {//頁號發生變化//(當前頁數 + 1) % 總頁數int page = (self.pageControl.currentPage+1) % kImageCount;self.pageControl.currentPage = page;//調用監聽方法。讓滾動視圖滾動 [self pageChanged:self.pageControl]; }#pragma mark - scrollView的代理方法//滾動視圖停下來 -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {// 停下來的當前頁數,通過contentOffset獲取當前偏移量NSLog(@"%@",NSStringFromCGPoint(scrollView.contentOffset));//計算頁數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 閱讀(...) 評論(...) 編輯 收藏轉載于:https://www.cnblogs.com/jackson-leung/p/4690080.html
總結
以上是生活随笔為你收集整理的ios 图片自动轮播的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 割双眼皮价格 双眼皮手术多少钱
- 下一篇: Android环境搭建和Android