本章講述如何顯示Camera拍攝的照片和圖片庫中的照片,如何保存這些照片。
涉及到的控件有UIImagePickerController和UIToolbar
model方面新建一個類用來存儲圖片。
實現步驟如下:
1. 添加一個UIImagePickerController 在DetailViewController中
2. 添加一個UIToolbar, 並在上面添加一個Camera button
3. 設置image picker的source type
三種類型:攝像頭,圖片庫,最近打開
4. Camera按鈕點擊處理
- (IBAction)takePicture:(id)sender {
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
}else{
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
}
imagePicker.delegate = self;
//Place image picker on the screen
[self presentViewController:imagePicker animated:YES completion:nil];
}
5. 顯示圖片
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
UIImage *image = info[UIImagePickerControllerOriginalImage];
//store the image in the ImageStore for this key
[[ImageStore sharedStore] setImage:image forKey:self.item.itemKey];
self.imageView.image = image;
[self dismissViewControllerAnimated:YES completion:nil];
}
6. 創建image model
這裏使用了一個可變字典來存儲圖片
7. 創建itemKey。用來唯一表示一個item。
這裏用到了NSUUID這個類。生成一個UUID來做爲itemKey。
8. 取消鍵盤顯示。
1)對於textField可以使用代理UITextFieldDelegate
中的方法
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
<span style="white-space:pre"> </span>[textField resignFirstResponder];
<span style="white-space:pre"> </span>return YES;
}
2)點任意位置關閉鍵盤。
首先讓UIViewController中的View爲UIControl的一個實例。(屬性中設置)
然後,綁定它的點擊方法,
- (IBAction)backgroundTapped:(id)sender
{
<span style="white-space:pre"> </span>[self.view endEditing:YES];
}
9. 講到爲什麼用#pragma mark