IT虾米网

iOS秒表功能实现详解

itxm 2018年06月23日 手机开发 571 0
/停止按钮 和 计次按钮。点击开始按钮,中间的大时钟开始计时,这时点击计次按钮,右上角的小时钟会把此刻的瞬时时间记录下来,同时在下面的tableView上也会显示。点击停止按钮会把右上角的小时钟,中间的大时钟清零,同时,下面的tableView也会清空。


效果图如下:


     


具体代码实现:



#import "MiaoBiaoViewController.h"


#define kW self.view.frame.size.width

#define kH self.view.frame.size.height

int count=;


@interface MiaoBiaoViewController ()


{

    NSTimer * _timer;  //定时器

    NSInteger _seconds;

}


//开始暂停按钮

@property (nonatomic,weak) UIButton * ssButton;


//计次按钮

@property (nonatomic,weak) UIButton * jcButton;


//右上角计次时间

@property (nonatomic,weak) UILabel * conLabel;


//中间秒表

@property (nonatomic,weak) UILabel * ctLabel;


//下面的每次记录的时间

@property (nonatomic,weak) UITableView * tableView;


//

@property (nonatomic,weak) UITableViewCell * cell;


//存放记录的数组

@property (nonatomic,strong) NSMutableArray * jcArray;


@end


@implementation MiaoBiaoViewController


#pragma mark - 懒加载

- (NSMutableArray *)jcArray

{

    if (_jcArray==nil)

    {

        _jcArray=[NSMutableArray array];

    }

    return  _jcArray;

}


#pragma mark - 入口

- (void)viewDidLoad {

    [super viewDidLoad];

    

    [self _loadViews];

}


- (void) _loadViews

{

    self.title=@"秒表";

    //小时钟---一直计时

    UILabel * conLabel=[[UILabel alloc]initWithFrame:CGRectMake(267, 65, 110, 50)];

    //conLabel.backgroundColor=[UIColor redColor];

    conLabel.text=@"00:00.00";

    conLabel.font=[UIFont fontWithName:nil size:25];

    self.conLabel=conLabel;

    [self.view addSubview:conLabel];

    

    //秒表

    UILabel * ctLabel=[[UILabel alloc]initWithFrame:CGRectMake(,110,kW,150)];

    //ctLabel.backgroundColor=[UIColor redColor];

    ctLabel.text=@"00:00.00";

    ctLabel.textAlignment=NSTextAlignmentCenter;

    ctLabel.font=[UIFont fontWithName:nil size:75];

    self.ctLabel=ctLabel;

    [self.view addSubview:ctLabel];

    

    //下方视图

    UIView * bView=[[UIView alloc]initWithFrame:CGRectMake(,230,kW,140)];

    bView.backgroundColor=[UIColor colorWithRed:0.1 green:0.1 blue:0.1 alpha:0.1];

    

    [self.view addSubview:bView];

    

    //NSLog(@"%f",bView.frame.origin.y);

    

    //开始停止按钮

    UIButton * ssButton=[[UIButton alloc]initWithFrame:CGRectMake((kW-200)/3, 20, 100, 100)];

    ssButton.backgroundColor=[UIColor whiteColor];

    ssButton.layer.cornerRadius=50;

    [ssButton setTitle:@"开始" forState:UIControlStateNormal];

    [ssButton setTitle:@"停止" forState:UIControlStateSelected];

    [ssButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal];

    [ssButton setTitleColor:[UIColor grayColor] forState:UIControlStateSelected];

    

    ssButton.tag=1;

    [ssButton addTarget:self action:@selector(StartStop:) forControlEvents:UIControlEventTouchUpInside];

    self.ssButton=ssButton;

    [bView addSubview:ssButton];

    

    

    //计次按钮

    UIButton * jcButton=[[UIButton alloc]initWithFrame:CGRectMake(((kW-200)/3)*2+100, 20, 100, 100)];

    jcButton.backgroundColor=[UIColor whiteColor];

    jcButton.layer.cornerRadius=50;

    [jcButton setTitle:@"计次" forState:UIControlStateNormal];

    [jcButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

    [jcButton addTarget:self action:@selector(CountNum) forControlEvents:UIControlEventTouchUpInside];

    self.jcButton=jcButton;

    [bView addSubview:jcButton];

    

    //点击计次按钮时记录的每次时间,存放到对应的cell上

    UITableView * tableView=[[UITableView alloc]initWithFrame:CGRectMake(, 370, kW, kH-370-60) style:UITableViewStylePlain];

    tableView.rowHeight=50;

    tableView.delegate=self;

    tableView.dataSource=self;

    self.tableView=tableView;

    [self.view addSubview:tableView];

}



#pragma mark - ssButton按钮的点击事件

- (void)StartStop:(UIButton *) button

{

    button.selected = !button.selected;

    if(_timer==nil)

    {

        //每隔0.01秒刷新一次页面

        _timer=[NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(runAction) userInfo:nil repeats:YES];

        [[NSRunLoop currentRunLoop] addTimer:_timer forMode:NSRunLoopCommonModes];

        NSLog(@"开始计时.....");

    }

    else

    {

        [_timer invalidate];   //让定时器失效

        _timer=nil;

        _ctLabel.text=@"00:00.00";

        _conLabel.text=@"00:00.00";

        _seconds=;

        self.cell=nil;

        self.jcArray=nil;

        [self.tableView reloadData];

        NSLog(@"计时停止.....");

    }

    

    //方法二

    /*

//    if (button.selected==1)

//    {

//        NSLog(@"开始计时.....");

//       

//    }

//    else

//    {

//        NSLog(@"计时停止.....");

//      

//    }

     */

    

}



#pragma mark - runAction

- (void) runAction

{

    _seconds++;

    //动态改变开始时间

    NSString * startTime=[NSString stringWithFormat:@"%02li:%02li.%02li",_seconds/100/60%60,_seconds/100%60,_seconds%100];

    _ctLabel.text=startTime;

    

}


#pragma mark - 计次

- (void)CountNum

{

    count++;

    _conLabel.text=_ctLabel.text;

   // NSLog(@"这是记录的第**** %i ****个时间数据: %@",count,_conLabel.text);

    [self.jcArray addObject:_conLabel.text];

//    NSLog(@"%@",self.jcArray);

    

    [self.tableView reloadData];

}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

    return self.jcArray.count;

}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    static NSString * identy=@"JRTable";

    UITableViewCell * cell=[tableView dequeueReusableCellWithIdentifier:identy];

    if (cell==nil)

    {

        cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identy];

        //增加label

//        UILabel * cellLabel=[[UILabel alloc]initWithFrame:CGRectMake(0, 0, kW, tableView.rowHeight)];

//        cellLabel.text=self.jcArray[indexPath.row];

//        cellLabel.textAlignment=NSTextAlignmentCenter;

//        [cell.contentView addSubview:cellLabel];

    }

     //NSLog(@"%@",self.jcArray[indexPath.row]);

    cell.textLabel.text = self.jcArray[indexPath.row];

    cell.textLabel.textAlignment=NSTextAlignmentCenter;

    self.cell=cell;

    return  self.cell;

}


@end

发布评论

分享到:

IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

iOS网络多线程 ---实现网络加载图片详解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。