0
点赞
收藏
分享

微信扫一扫

用UIImagePickerViewController自定义相机界面

小磊z 2022-08-12 阅读 30


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

举报

相关推荐

0 条评论