• iOS开发UI篇—用纯代码写实现图片轮播


    一、实现效果

    实现图片的自动轮播

    二、实现代码

      1 //  手写图片轮播器
      2 //
      3 //  Created by 鑫 on 14-10-9.
      4 //  Copyright (c) 2014年 梁镋鑫. All rights reserved.
      5 //
      6 #define TXImageCount 5
      7 
      8 #import "TXViewController.h"
      9 
     10 
     11 @interface TXViewController ()<UIScrollViewDelegate>
     12 {
     13     UIScrollView *_scrollView;
     14     UIPageControl *_pageControl;
     15 }
     16 @property(nonatomic ,strong)NSTimer *timer;
     17 
     18 @end
     19 
     20 @implementation TXViewController
     21 
     22 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
     23 {
     24     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
     25     if (self) {
     26         // Custom initialization
     27     }
     28     return self;
     29 }
     30 
     31 - (void)viewDidLoad
     32 {
     33     [super viewDidLoad];
     34     
     35     
     36     _scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(10, 85, 300, 130)];
     37     
     38     //一些固定参数
     39     CGFloat imageW = _scrollView.frame.size.width;
     40     CGFloat imageH = _scrollView.frame.size.height;
     41     CGFloat imageY = 0;
     42     _scrollView.backgroundColor = [UIColor blackColor];
     43     [self.view addSubview:_scrollView];
     44     
     45     _scrollView.delegate = self;
     46     //添加五张图片到scrollview中
     47     for (int i = 0; i<TXImageCount; i++) {
     48         UIImageView *imageView = [[UIImageView alloc] init];
     49         
     50         // 设置frame
     51         CGFloat imageX = i * imageW;
     52         imageView.frame = CGRectMake(imageX, imageY, imageW, imageH);
     53         
     54         // 设置图片
     55        NSString *name = [NSString stringWithFormat:@"img_0%d", i + 1];
     56         imageView.image = [UIImage imageNamed:name];
     57         [_scrollView addSubview:imageView];
     58         
     59         
     60         //添加定时器
     61         
     62         [self addTimer];
     63         
     64     
     65     
     66     }
     67     //添加分页点
     68     _pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(107, 128, 106, 37)];
     69     _pageControl.backgroundColor=[UIColor orangeColor];
     70     
     71     //设置pageControl的总页数
     72     
     73     _pageControl.numberOfPages = TXImageCount;
     74     
     75     [_pageControl addTarget:self action:@selector(changPage) forControlEvents:UIControlEventValueChanged];
     76     [self.view addSubview:_pageControl];
     77     //设置内容尺寸
     78     CGFloat contentW =TXImageCount *imageW;
     79     _scrollView.contentSize = CGSizeMake(contentW, 0);
     80     
     81     //隐藏水平滚动条
     82     _scrollView.showsHorizontalScrollIndicator =NO;
     83     
     84     //分页
     85     _scrollView.pagingEnabled = YES;
     86     
     87     
     88 }
     89 /**
     90  *  点击pageControl改变scrollView的页面
     91  */
     92 -(void)changPage
     93 {
     94     CGPoint offest=CGPointMake(_pageControl.currentPage*_scrollView.frame.size.width, 0);
     95     [_scrollView setContentOffset:offest animated:YES];
     96 }
     97 /**
     98  *  添加定时器
     99  */
    100 -(void)addTimer
    101 {
    102      self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(nextImage) userInfo:nil repeats:YES];
    103     //提高优先级
    104     [[NSRunLoop currentRunLoop ] addTimer:self.timer forMode:NSRunLoopCommonModes];
    105 }
    106 /**
    107  *  移除定时器
    108  */
    109 -(void)removeTimer
    110 {
    111     [self.timer invalidate];
    112     self.timer =nil;
    113 }
    114 -(void)nextImage
    115 {
    116     //1.增加pageControl的页码
    117     int page = 0;
    118     if (_pageControl.currentPage ==TXImageCount-1) {
    119         page = 0;
    120     }
    121     else
    122     {
    123         page = _pageControl.currentPage +1;
    124     }
    125     //计算scrolview滚动的位置
    126     CGFloat offsetX = page *_scrollView.frame.size.width;
    127     CGPoint offset = CGPointMake(offsetX, 0);
    128     [_scrollView setContentOffset:offset animated:YES];
    129     
    130 }
    131 #pragma mark  --代理方法
    132 
    133 -(void)scrollViewDidScroll:(UIScrollView *)scrollView
    134 {
    135     //根据scrollview的滚动位置决定pageControl显示第几页
    136     CGFloat scrollW = _scrollView.frame.size.width;
    137     
    138     int page = (_scrollView.contentOffset.x+scrollW *0.5)/scrollW;
    139     _pageControl.currentPage =page;
    140 }
    141 - (void)didReceiveMemoryWarning
    142 {
    143     [super didReceiveMemoryWarning];
    144     // Dispose of any resources that can be recreated.
    145 }
    146 /**
    147  *  停止拖拽时调用
    148  
    149  */
    150 -(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
    151 {
    152     // 停止定时器(一旦定时器停止了,就不能再使用)
    153     [self addTimer];
    154 }
    155 
    156 /**
    157  *  开始拖拽的时候调用
    158  */
    159 -(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
    160 {
    161     // 停止定时器(一旦定时器停止了,就不能再使用)
    162     [self removeTimer];
    163 }
    164 
    165 
    166 
    167 @end
  • 相关阅读:
    Hacker's guide to Neural Networks
    Backbone Collection 源码简谈
    Backbone Model 源码简谈 (版本:1.1.0 基础部分完毕)
    Android系统架构概述
    关于 Android 程序员最近的状况
    调查:周末iPhone用户喜欢出去玩 Android喜欢宅家看电影/看书
    调查:周末iPhone用户喜欢出去玩 Android喜欢宅家看电影/看书
    Android进阶必学retrofit源码解析
    Android进阶必学retrofit源码解析
    移动互联网资料图
  • 原文地址:https://www.cnblogs.com/asd5551680/p/4069512.html
Copyright © 2020-2023  润新知