相機相冊閃關燈

#import "RootViewController.h"

#import#define KScreenWidth [[UIScreen mainScreen]bounds].size.width

#define KScreenHeight [[UIScreen mainScreen]bounds].size.height

@interface RootViewController ()

@property(nonatomic, strong)UIImageView *imageView;// 需要引入 #import// 獲取硬件設備

@property(nonatomic, strong)AVCaptureDevice *device;

@end

@implementation RootViewController

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view.

self.navigationController.navigationBar.translucent = NO;

self.navigationItem.title = @"相機相冊閃光燈";

self.imageView = [[UIImageView alloc]initWithFrame:CGRectMake((KScreenWidth - 100) / 2, 30, 100, 100)];

self.imageView.backgroundColor = [UIColor cyanColor];

[self.view addSubview:_imageView];

UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];

[button setTitle:@"選擇" forState:UIControlStateNormal];

button.frame = CGRectMake((KScreenWidth - 100) / 2, 150, 100, 30);

[button addTarget:self action:@selector(actionSheetAction:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:button];

UIButton *closeButton = [UIButton buttonWithType:UIButtonTypeSystem];

[closeButton setTitle:@"關閉閃關燈" forState:UIControlStateNormal];

closeButton.frame = CGRectMake((KScreenWidth - 100) / 2, 200, 100, 30);

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

[self.view addSubview:closeButton];

}

- (void)closeButton:(UIButton *)button

{

// 如果閃光燈已經打開,那么把閃光燈關閉

if (self.device.torchMode == AVCaptureTorchModeOn)

{

[self.device setTorchMode:AVCaptureTorchModeOff];

[self.device unlockForConfiguration]; // 解除對設備硬件的獨占

}

// 如果閃光燈是關閉狀態則提示已經是關閉

else

{

UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"閃關燈是關閉狀態" message:nil delegate:self cancelButtonTitle:@"確定" otherButtonTitles:nil, nil];

[alertView show];

}

}

#pragma mark -? 點擊頭像button觸發方法 彈出actionSheet -

- (void)actionSheetAction:(UIButton *)button

{

UIActionSheet *actionSheet = [[UIActionSheet alloc]initWithTitle:nil delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"拍照",@"相冊",@"閃光燈", nil];

actionSheet.actionSheetStyle = UIActionSheetStyleDefault;

[actionSheet showInView:self.view];

}

#pragma mark ----- ActionSheet觸發方法 -----

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex

{

// 調用系統相機

if (buttonIndex == 0)

{

// 如果有系統相機

if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])

{

UIImagePickerController * picker = [[UIImagePickerController alloc]init];

picker.delegate = self;

picker.allowsEditing = YES;

//攝像頭

picker.sourceType = UIImagePickerControllerSourceTypeCamera;

[self presentViewController:picker animated:YES completion:nil];

}

//如果沒有系統相機提示用戶

else

{

UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"您的設備沒有攝像頭" message:nil delegate:self cancelButtonTitle:@"確定" otherButtonTitles:nil, nil];

[alertView show];

}

}

// 調用系統相冊

else if (buttonIndex == 1)

{

if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {

UIImagePickerController * picker = [[UIImagePickerController alloc]init];

picker.delegate = self;

picker.allowsEditing = YES;//是否可以編輯

//打開相冊選擇照片

picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

// 模態進入相冊

[self presentViewController:picker animated:YES completion:nil];

}

}

else if (buttonIndex == 2)

{

if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])

{

self.device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; // 返回用于捕獲視頻數據的設備(攝像頭)

if (![self.device hasTorch]) {

NSLog(@"沒有閃光燈");

}else{

[self.device lockForConfiguration:nil]; // 請求獨占設備的硬件性能

if (self.device.torchMode == AVCaptureTorchModeOff) {

[self.device setTorchMode: AVCaptureTorchModeOn]; // 打開閃光燈

}

}

}

else

{

//如果當前設備沒有攝像頭

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:@"哎呀,當前設備沒有攝像頭。" delegate:nil cancelButtonTitle:@"確定" otherButtonTitles:nil];

[alertView show];

}

}

}

#pragma mark - 拍攝完成后或者選擇相冊完成后自動調用的方法 -

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

{

// 存入系統相冊

// UIImageWriteToSavedPhotosAlbum(backImageView.image, nil, nil, nil);

//得到圖片

self.imageView.image = [info objectForKey:UIImagePickerControllerOriginalImage];

NSString *filePath = [self libirayFilePath];

NSLog(@"filePath === %@", filePath);

// 模態返回

[self dismissViewControllerAnimated:YES completion:nil];

}

- (NSString *)libirayFilePath

{

return [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)firstObject];

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,835評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,676評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,730評論 0 380
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,118評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,873評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,266評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,330評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,482評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,036評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,846評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,025評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,575評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,279評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,684評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,953評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,751評論 3 394
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,016評論 2 375

推薦閱讀更多精彩內容