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 }