2013-10-12 99 views
-3

我正在制作手电筒应用程序。闪烁手电筒,使手电筒应用程序

其职能是1.on /打火,2.blink触摸(带开关和滑块)

这里是我的代码

ViewController.m 

// 
// ViewController.m 
// Just Flashlight 
// 
// Created by CenoX on 2013. 10. 9.. 
// Copyright (c) 2013년 SHIFTstudios. All rights reserved. 
// 

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 



- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    self.blinksliderlabel.text = @"150ms"; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (IBAction)flash:(UIButton *)sender { 

    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 

    if ([device hasTorch] == NO) 
    { 
     [device setTorchMode:AVCaptureTorchModeOn]; 
     [_flashton setHighlighted:YES]; 
    } else { 
     [device setTorchMode:AVCaptureTorchModeOff]; 
     [_flashton setHighlighted:NO]; 
    } 
} 

- (IBAction)blinkspeed:(UISlider *)sender { 
    int progress = lroundf(sender.value); 
    self.blinksliderlabel.text = [NSString stringWithFormat:@"%dms", progress]; 
} 
@end 

ViewController.h 

// 
// ViewController.h 
// Just Flashlight 
// 
// Created by CenoX on 2013. 10. 9.. 
// Copyright (c) 2013년 SHIFTstudios. All rights reserved. 
// 

#import <UIKit/UIKit.h> 
#import <AVFoundation/AVFoundation.h> 

@interface ViewController : UIViewController 
@property (weak, nonatomic) IBOutlet UIImageView *flashton; 
- (IBAction)flash:(UIButton *)sender; 
@property (weak, nonatomic) IBOutlet UILabel *blinksliderlabel; 
- (IBAction)blinkspeed:(UISlider *)sender; 
@property (weak, nonatomic) IBOutlet UISwitch *blinkswitch; 


@end 

如何闪烁的火炬(手电筒)。

回答

1

你应该设置一个NSTimer。

从拥有NSTimer的属性开始,所以您可以使其失效以便稍后停止。

@property (nonatomic, strong) NSTimer *blinkTimer. 

下面是我如何在我的代码创建一个定时器样本:

self.blinkTimer = [NSTimer scheduledTimerWithTimeInterval:0.3 target:self selector:@selector(timerUpdate) userInfo:nil repeats:YES]; 

这将调用timerUpdate每0.3秒。

在timerUpdate中,您可以打开/关闭手电筒。

当你想要它停止时,只要做[self.blinkTimer invalidate];