HƯỚNG DẪN XÂY DỰNG MỘT MÁY ẢNH ĐƠN GIẢN SỬ DỤNG UIIMAGEPICKERCONTROLLER Máy ảnh rất phổ biến, camera trên di động là một máy ảnh tuyệt vời, giúp bạn lưu khoảnh khắc tuyệt vời bên bạn bè
Trang 1HƯỚNG DẪN XÂY DỰNG MỘT MÁY ẢNH ĐƠN GIẢN SỬ DỤNG
UIIMAGEPICKERCONTROLLER
Máy ảnh rất phổ biến, camera trên di động là một máy ảnh tuyệt vời, giúp bạn lưu khoảnh khắc tuyệt vời bên bạn bè và người thân vậy nó hoạt động cơ bản ra sao?
Thiết kế đơn giản một máy ảnh như thế nào? sử dụng thư viện ảnh như thế nào… là những câu hỏi rất phổ biến !!! Ở hướng dẫn này tôi sẽ giúp các bạn xây
dựng một máy ảnh đơn giản bằng ngôn ngữ lập trình ios,đồng thời chọn ảnh ra
xem ở màn hình lớn hơn
Mục tiêu:
1 Tạo ra máy ảnh đơn giản view ảnh chúng ta chụp được
2 Truy cập thư viện ảnh chung và View ảnh sang màn hình lớn hơn
Trang 2
Bắt đầu nào :
khởi tạo project mới
Trang 3Thiết kế giao diện:
Trang 4
Kéo imageView để xem ảnh ở chế độ lớn hơn, kéo vào 2 button ,button1 đặt tên chụp ảnh button2 đặt tên là chọn ảnh khi click vào button chụp ảnh vào chế độ camera chụp ảnh Khi click vào chế độ Chọn ảnh vào thư viện ảnh nội bộ tìm ảnh
để view
Trang 5Tạo kết nối :
vào newFile chọn cocoa Touch class tạo class đặt tên pickerImageViewController dùng để quản lý Viewcontroller chúng ta vừa tạo
ra
kết nối class:
Trang 6
Tạo action để bắt sự kiện cho chọn ảnh và chụp ảnh:
Trang 7
Để trình chiếu ảnh tạo property cho imageView
Trong file :pickerImageViewController.h!
Sau khi kết nối ta được mã nguồn như sau:
1 @property (weak, nonatomic) IBOutlet UIImageView *imageView;
2 - (IBAction)chupAnh:(UIButton *)sender;
3 - (IBAction)chonAnh:(UIButton *)sender;
ok như thế là chúng ta đã thiết kế xong giao diện :
Xem thêm: Địa chỉ học lâp trình android ở đâu tốt
Mã nguồn:
Như chúng ta đã nói, chúng ta cần một đại biểu để đối phó với sự tương tác người dùng với máy ảnh hoặc thư viện ảnh Để làm được điều đó chúng ta phải phù hợp với các giao thức UIImagePickerControllerDelegate.Ngoài ra, vì chúng tôi
sẽ trình bày các máy ảnh (hoặc thư viện ảnh) kiểu modally, chúng ta phải thực hiện các giao thức UINavigationControllerDelegate Thêm vào file.h
Trang 81 @interface pickerImageViewController : UIViewController<UIImagePickerControllerDelegate
,UINavigationControllerDelegate>
1 - (IBAction)chupAnh:(UIButton *)sender {
3 UIImagePickerController *picker=[[UIImagePickerController alloc] init];
5 picker.delegate=self;//nó lấy delegate khi ta đăng ký ban đầu
thức didFinishPickingMediaWithInfo để lưu ảnh thay đổi
7 picker.allowsEditing=YES;
9 picker.sourceType=UIImagePickerControllerSourceTypeCamera;
10 //cho phép phủ picker lên view
11 [self presentViewController:picker animated:YES completion:nil];
12 }
Mã lệnh tôi đã commment bên trong ý nghĩa từng dòng
Nguyên lý chạy:
– Tạo một đối tượng kiểu UIImagePickerController đăng ký delegate cho nó ,Đăng ký kiểu truy cập ảnh camera , đăng ký chỉnh sủa ảnh cho nó, khi phương thức allowEditting =YES thì ra view chỉnh sửa
Trang 9chỉnh sủa các ảnh , các ảnh chỉnh sửa sẽ lưu trong dictionary info[UIImagePickerControllerEditedImage] Và nó sẽ được gọi đến phương thức:
2 - void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{
3 UIImage *image=info[UIImagePickerControllerEditedImage];
4 self.imageView.image=image;
5 NSLog(@"ok");
6 [picker dismissViewControllerAnimated:YES completion:nil];
7 }
Cho phép ta chọn ảnh đã chỉnh sửa Khi click vào nút choose tắt cửa sổ đang chỉnh sửa [picker dismissViewControllerAnimated:YES completion:nil];
và set ảnh vào imageView
khi đó sẽ đi đến
[self presentViewController:picker animated:YES completion:nil ] cho phép phủ view lên.; Nếu ta không click vào choose click vào Cancel thi gọi đến
1 - void)imagePickerControllerDidCancel:(UIImagePickerController
*)picker{
2 NSLog(@"ok1");
3 [picker dismissViewControllerAnimated:YES completion:nil];
4 }
Trang 10để thoát trình lựa chọn ảnh
Tương tự đối với lựa chọn ảnh trong thư viên chung chỉ đăng
ký picker.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;
1 - (IBAction)chonAnh:(UIButton *)sender {
2 UIImagePickerController *picker=[[UIImagePickerController alloc] init];
3 picker.delegate=self;
4 picker.allowsEditing=YES;//khi đăng ký chỉnh sửa gọi đến phương thức didFinishPickingMediaWithInfo
5 picker.sourceType=UIImagePickerControllerSourceTypePhotoLibrar y;
6 [self presentViewController:picker animated:YES completion:nil ];
7 }
Biên dịch và chạy thử rất tiếc camera trên simulator không có camera nên không thể chụp ảnh
Chúng ta chỉ có thể chọn ảnh.Các bạn có device Iphone chạy demo sẽ chụp được ảnh
kết quả biên dịch trên simulator :
Trang 11
full source code :
1 http://www.mediafire.com/download/kng2bqbix1cc7hm/pickerImage zip