• UIScrollView控制图片滑动 NSTimer UIPageControl


      1 #import "ViewController.h"
      2 
      3 @interface ViewController ()<UIScrollViewDelegate>
      4 @property(strong,nonatomic)UIScrollView * ScrollView;
      5 @property(strong,nonatomic)UIImageView * view1;
      6 
      7 @property(strong,nonatomic)UIPageControl * PageControl;
      8 @property(strong,nonatomic)UILabel * titltLabel;
      9 
     10 @property(strong,nonatomic)NSArray * contentArray;
     11 @property(strong,nonatomic)NSArray * titleArray;
     12 
     13 @property(strong,nonatomic)NSTimer * timerView;
     14 -(NSArray *)contentArray;
     15 @end
     16 
     17 @implementation ViewController
     18 
     19 -(NSArray *)contentArray
     20 {
     21     NSString * path = [[NSBundle mainBundle]pathForResource:@"photo.plist" ofType:nil];
     22     _contentArray = [NSArray arrayWithContentsOfFile:path];
     23     return _contentArray;
     24 }
     25 
     26 - (void)viewDidLoad {
     27     [super viewDidLoad];
     28     
     29     self.titleArray = @[@"美女1",@"美女2",@"美女3",@"美女4"];
     30     
     31     CGFloat width = self.view.bounds.size.width;
     32     self.ScrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 10, width, 313)];
     33     self.ScrollView.backgroundColor = [UIColor groupTableViewBackgroundColor];
     34     self.ScrollView.contentOffset = CGPointMake(width, 0);
     35     self.ScrollView.contentSize = CGSizeMake(width*6, 313);
     36     self.ScrollView.pagingEnabled = YES;
     37     [self.view addSubview:self.ScrollView];
     38     self.ScrollView.delegate = self;
     39     self.ScrollView.showsHorizontalScrollIndicator = NO;
     40     [self.view addSubview:self.ScrollView];
     41     
     42     
     43     for (int i; i < 6; i++)
     44     {
     45         NSDictionary * dic = self.contentArray[i];
     46         self.view1 = [[UIImageView alloc]initWithFrame:CGRectMake(width*i, 10, width, 313)];
     47         self.view1.image = [UIImage imageNamed:dic[@"icon"]];
     48         [self.ScrollView addSubview:self.view1];
     49     }
     50     
     51     
     52     
     53     self.titltLabel = [[UILabel alloc]initWithFrame:CGRectMake(width/2, 280, 80, 60)];
     54     self.titltLabel.text = self.titleArray[0];
     55     [self.view addSubview:self.titltLabel];
     56     
     57     self.PageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(width/2, 300, 50, 20)];
     58     self.PageControl.numberOfPages = 4;
     59     self.PageControl.currentPage = 0;
     60     //设置小白点颜色
     61     [self.PageControl setPageIndicatorTintColor:[UIColor groupTableViewBackgroundColor]];
     62     [self.PageControl setCurrentPageIndicatorTintColor:[UIColor greenColor]];
     63     [self.view addSubview:self.PageControl];
     64     
     65     
     66     self.timerView = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(Autoplayphoto) userInfo:nil repeats:YES];
     67     
     68 }
     69 -(void)Autoplayphoto
     70 {
     71     CGFloat width = self.view.bounds.size.width;
     72     CGPoint offset = self.ScrollView.contentOffset;
     73     
     74     if (offset.x == 5*width)
     75     {
     76         offset.x = offset.x - 5*width;
     77     }else
     78     {
     79         offset.x = offset.x + width;
     80     }
     81     
     82     self.ScrollView.contentOffset = offset;
     83     
     84     int page = offset.x/width -1;
     85     if (page > 3) {
     86         page = 0;
     87     }
     88     if (page < 0) {
     89         page = 3;
     90     }
     91     self.PageControl.currentPage = page;
     92     
     93     self.titltLabel.text = self.titleArray[page];
     94 }
     95 
     96 
     97 -(void)scrollViewDidScroll:(UIScrollView *)scrollView
     98 {
     99     CGFloat width = self.view.bounds.size.width;
    100     CGFloat offset = self.ScrollView.contentOffset.x;
    101     if (offset >= 5*width)
    102     {
    103         self.ScrollView.contentOffset = CGPointMake(width, 0);
    104     }
    105     if (offset <= 0)
    106     {
    107         self.ScrollView.contentOffset = CGPointMake(4*width, 0);
    108     }
    109     int page = offset/width - 1;
    110     if (page > 3) {
    111         page = 0;
    112     }
    113     if (page < 0) {
    114         page = 3;
    115     }
    116     self.PageControl.currentPage = page;
    117     //NSLog(@"page = %d",page);
    118     self.titltLabel.text = self.titleArray[page];
    119     
    120 }
    121 
    122 
    123 - (void)didReceiveMemoryWarning {
    124     [super didReceiveMemoryWarning];
    125     // Dispose of any resources that can be recreated.
    126 }
    127 
    128 @end
    View Code

    此题目是将循环播放的图片放入plist文件中,然后再读取出来显示。

    1、plist文件读取方法

    @property(strong,nonatomic)NSArray * contentArray;//contentArray数组用于存储plist文件中的内容

    -(NSArray *)contentArray; //声明contentArray的getter方法

    //实现contentArray的getter方法

    -(NSArray *)contentArray

    {

    NSString * path = [[NSBundle mainBundle]pathForResource:@"photo.plist" ofType:nil]; //寻找plist文件路径,并保存于字符串path中

    _contentArray = [NSArray arrayWithContentsOfFile:path]; //将plist文件中的图片内容保存于属性contentArray

    return _contentArray;

    }

    2、UIScrollController常用属性和常用方法

    //设置偏移量

    self.ScrollView.contentOffset = CGPointMake(width, 0);

    //设置内容大小

    self.ScrollView.contentSize = CGSizeMake(width*6, 313);

     //此属性是当图片的中轴到达或超过偏移量的一半的地方时图像会自动滑动,否则图片将返回滑动前的位置

    self.ScrollView.pagingEnabled = YES;

    //关闭水平滑动指示器,相对应的有设置垂直滑动指示器

    self.ScrollView.showsHorizontalScrollIndicator = NO;

    方法:

    //只要图片滑动此方法就会被执行

    -(void)scrollViewDidScroll:(UIScrollView *)scrollView

    //视图将要(开始)拖拽时该方法被执行

    - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

     //拖拽结束时,该方法被执行

    - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate

    //自动滑动结束时,此方法被执行

    - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

     3、UIPageControl

    常用属性及方法

    self.PageControl.numberOfPages = 4; //设置页的张数

    self.PageControl.currentPage = 0; //设置初始页

    //设置小白点颜色

    [self.PageControl setPageIndicatorTintColor:[UIColor groupTableViewBackgroundColor]];

    //设置当前页小点的颜色

    [self.PageControl setCurrentPageIndicatorTintColor:[UIColor greenColor]];

    4、NSTimer

    //暂停计时器

    - (void)pauseTimer:(NSTimer *)oTimer

    {

        [oTimer setFireDate:[NSDate distantFuture]];

    }

    //重启计时器

    - (void)restartTimer:(NSTimer *)oTimer

    {

        [oTimer setFireDate:[NSDate date]];

    }

    //延时启动定时器

    - (void)restartTimerAfterDelay:(NSTimeInterval)interval timer:(NSTimer *)oTimer

    {

        [oTimer setFireDate:[NSDate dateWithTimeInterval:interval sinceDate:[NSDate date]]];

    }

    //停止计时器

    - (void)stopTimer:(NSTimer *)oTimer

    {

        [oTimer invalidate];

    }

     //此种方式创建的timer已经添加至runloop中

    self.timerView = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(Autoplayphoto) userInfo:nil repeats:YES];

     //此种方式没有将创建的timer添加至runloop中

    timer = [NSTimer timerWithTimeInterval:timerInterval target:self selector:@selector(scrollMethod) userInfo:nil repeats:YES];

    //因此需要将timer添加至runloop中

        [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];

  • 相关阅读:
    Java中IO软件包的详细介绍
    Java中IO软件包的详细介绍
    Java中输入时IO包与Scanner的区别
    Java中输入时IO包与Scanner的区别
    Java中输入时IO包与Scanner的区别
    Java中输入时IO包与Scanner的区别
    Java中输入时IO包与Scanner的区别
    虚拟桌面技术的初步探讨
    C语言程序的内存布局
    用汇编语言给XP记事本添加“自动保存”功能 good
  • 原文地址:https://www.cnblogs.com/ylg-----/p/4760227.html
Copyright © 2020-2023  润新知