1、 監控搖一搖動作
1> 讓當前視圖控制器成為第一響應者
// 必須先讓當前視圖控制器成為第一響應者才能響應動作時間
[self becomeFirstResponder];
2> 實現響應方法-繼承自UIResponder的方法
復制代碼
1 - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
2 {
3 // 如果動作類型是搖一搖[震動]
4 if (motion == UIEventSubtypeMotionShake) {
5
6 // 調用截屏方法
7 [self snapshot];
8 }
9 }
復制代碼
2、 截屏
注意: 1 > 在獲取圖像時,必須先開啟圖像上下文,再獲取上下文
2 > 保存成功後執行的方法必須是固定格式的,也就是下面代碼所展示的格式
復制代碼
1 #pragma mark - 點擊截屏按鈕
2 - (IBAction)snapshot
3 {
4 // 1. 開啟圖像上下文[必須先開開啟上下文再執行第二步,順序不可改變]
5 UIGraphicsBeginImageContext(self.view.bounds.size);
6
7 // 2. 獲取上下文
8 CGContextRef context = UIGraphicsGetCurrentContext();
9
10 // 3. 將當前視圖圖層渲染到當前上下文
11 [self.view.layer renderInContext:context];
12
13 // 4. 從當前上下文獲取圖像
14 UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
15
16 // 5. 關閉圖像上下文
17 UIGraphicsEndImageContext();
18
19 // 6. 保存圖像至相冊
20 UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
21 }
22
23 #pragma mark 保存完成後調用的方法[格式固定]
24 - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
25 {
26 if (error) {
27 NSLog(@"error-%@", error.localizedDescription);
28 }else{
29 NSLog(@"保存成功");
30 }
31 }
復制代碼