1.设定imagePacker参数
// Transform values for full screen support:
#define CAMERA_TRANSFORM_X 1
// this works for iOS 4.x
#define CAMERA_TRANSFORM_Y 1.24299
-(void)viewWillAppear:(BOOL)animated{
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
imagePickerController.delegate = self;
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePickerController.showsCameraControls = NO;
imagePickerController.navigationBarHidden = YES;
imagePickerController.wantsFullScreenLayout = YES;
imagePickerController.cameraViewTransform =CGAffineTransformScale(imagePickerController.cameraViewTransform, CAMERA_TRANSFORM_X,CAMERA_TRANSFORM_Y);
cameraViewController = [[CameraOverlayViewControlleralloc]initWithNibName:@"CameraOverlayViewController" bundle:nil];
imagePickerController.cameraOverlayView = cameraViewController.view;
cameraViewController.pickerController = imagePickerController;
[self presentModalViewController:imagePickerController animated:NO];
release];
}
2.代理方法
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary
[picker dismissModalViewControllerAnimated:NO];
UIImage* image = [info valueForKey:UIImagePickerControllerOriginalImage];
BeautifyPhotoViewController* beautifyPhotoViewController = [[BeautifyPhotoViewControlleralloc]initWithNibName:@"BeautifyPhotoViewController" bundle:nil];
photoImage
[self.navigationController pushViewController:beautifyPhotoViewController animated:YES];
release];
}
3.overlayView对应的controller
#import
@interface CameraOverlayViewController ()
@end
@implementation
@synthesize
@synthesize
@synthesize
@synthesize
@synthesize
@synthesize photoBtn;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
[self getAllPhotoImages];
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
isOneToOne = YES;
imageArray = [[NSMutableArray alloc]init];
shadowView = [[ShadowView alloc]initWithRect:CGRectMake(0, 80, 320, 320)];
[self.view addSubview:shadowView];
[self.view sendSubviewToBack:shadowView];
[shadowView release];
}
- (void)viewDidUnload
{
[super viewDidUnload];
}
//闪光灯
-(IBAction)cameraTorchOn:(id)sender{
if (pickerController.cameraFlashMode ==UIImagePickerControllerCameraFlashModeAuto) {
pickerController.cameraFlashMode = UIImagePickerControllerCameraFlashModeOn;
else
pickerController.cameraFlashMode = UIImagePickerControllerCameraFlashModeOff;
}
}
//前后摄像头
- (IBAction)swapFrontAndBackCameras:(id)sender {
if (pickerController.cameraDevice ==UIImagePickerControllerCameraDeviceRear ) {
pickerController.cameraDevice = UIImagePickerControllerCameraDeviceFront;
else
pickerController.cameraDevice = UIImagePickerControllerCameraDeviceRear;
}
}
//改变拍摄比例
-(IBAction)changeCameraScale:(id)sender{
if (isOneToOne) {
[shadowView changeRect:CGRectMake(0, 0, 320, 428)];
[cameraScaleBtn setImage:[UIImage imageNamed:@"font_-scale43.png"]forState:UIControlStateNormal];
titleImageView.alpha = 0.2;
flashModeBtn.alpha = 0.5;
deviceModeBtn.alpha = 0.5;
isOneToOne = NO;
else
[shadowView changeRect:CGRectMake(0, 80, 320, 320)];
[cameraScaleBtn setImage:[UIImage imageNamed:@"font_-scale11.png"]forState:UIControlStateNormal];
titleImageView.alpha = 1;
flashModeBtn.alpha = 1;
deviceModeBtn.alpha = 1;
isOneToOne = YES;
}
}
- (IBAction)enterPhotoAlbum:(id)sender {
PhotoAlbumViewController* photoAlbumViewController = [[PhotoAlbumViewControlleralloc]initWithNibName:@"PhotoAlbumViewController" bundle:nil];
self presentModalViewController:photoAlbumViewController animated:YES];
}
//拍摄照片
-(IBAction)takeThePic:(id)sender{
[pickerController takePicture];
}
-(IBAction)backToHome:(id)sender{
[pickerController dismissModalViewControllerAnimated:NO];
[[NSNotificationCenter defaultCenter] postNotificationName:@"backToHome" object:nil];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (void)dealloc
{
[cameraScaleBtn release];
[flashModeBtn release];
[deviceModeBtn release];
[titleImageView release];
super dealloc];
}
-(void)getAllPhotoImages{
ALAssetsLibraryAccessFailureBlock failureblock = ^(NSError *myerror){
NSLog(@"error occour =%@", [myerror localizedDescription]);
};
ALAssetsGroupEnumerationResultsBlock groupEnumerAtion = ^(ALAsset *result, NSUInteger index,BOOL *stop){
if (result!=NULL) {
if ([[result valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypePhoto]) {
imageArray addObject:result];
UIImage *img=[UIImage imageWithCGImage:result.thumbnail];
[photoBtn setImage:img forState:UIControlStateNormal];
}
}
};
ALAssetsGroup* group, BOOL* stop){
if (group == nil) {
return;
}
if (group!=nil) {
enumerateAssetsUsingBlock:groupEnumerAtion];
}
};
ALAssetsLibrary* library = [[ALAssetsLibrary alloc] init];
[library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos
usingBlock:libraryGroupsEnumeration
failureBlock:failureblock];
release];
}
@end