2013-06-25 94 views
0

我在网上搜索了一个解决方案,但不幸的是我无法找到解决我的问题的解决方案。UIImagePickerController在继承中获取图像

大多数人都在创建UIImagePickerController类的对象,但我决定以不同的方式做到这一点。

我创建了一个新类CameraViewController这个类扩展了UIImagePickerController

我.h文件中:

#import <UIKit/UIKit.h> 

@interface CameraViewController : UIImagePickerController <UIImagePickerControllerDelegate> 

-(void)captureImage; 

@end 

我.m文件:

#import "CameraViewController.h" 

#define CAMERA_TRANSFORM_X 1 
#define CAMERA_TRANSFORM_Y 1.5 

@interface CameraViewController() 

@end 

@implementation CameraViewController 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 568)]; 
    UIButton *btnCapture = [[UIButton alloc] initWithFrame:CGRectMake((320/2)-(76/2), 480, 76, 76)]; 
    [btnCapture setImage:[UIImage imageNamed:@"cam.png"] forState:UIControlStateNormal]; 
    [btnCapture addTarget:self action:@selector(captureImage) forControlEvents:UIControlEventTouchUpInside]; 

    [view addSubview:btnCapture]; 

    self.sourceType = UIImagePickerControllerSourceTypeCamera; 

    self.showsCameraControls = NO; 
    self.navigationBarHidden = YES; 
    self.wantsFullScreenLayout = YES; 
    self.cameraViewTransform = CGAffineTransformScale(self.cameraViewTransform, CAMERA_TRANSFORM_X, CAMERA_TRANSFORM_Y); 
    self.cameraOverlayView = view; 
    //[self openCamera]; 
    // Do any additional setup after loading the view. 
} 

-(void)takePicture //overwrite take picture method 
{ 
    [super takePicture]; 
    NSLog(@"%@", self); 

} 

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    NSLog(@"%@", info); 
} 

-(void)captureImage 
{ 
    [self takePicture]; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

@end 

我实现委托UIImagePickerControllerDelegate。但似乎我的imagePickerController不是由于某种原因而被调用的。在这种方法中,我尝试记录一个NSDirectory。所以我想也许我可以通过覆盖takePicture方法来得到我的形象,但我不知道如何。任何人都知道如何帮助我?非常感谢

回答

1

从苹果文档The UIImagePickerController class supports portrait mode only. This class is intended to be used as-is and does not support subclassing.

所以你不能继承UIImagePickerController

+0

我在肖像中使用它。你是认真的,这实际上很奇怪,为什么我不能使用子类。我没有改变任何东西,只是想保持简单和易于使用:( –

+0

不要计量,你在肖像中使用它,不要改变任何东西,我认为苹果试图保护相机的应用程序和方式它的工作原理是它不允许对它进行子类化,也许你不想改变任何东西,但是在iOS世界的某个地方,会有开发人员以某种好或坏的方式改变某些东西,我认为这是你可以继承它的主要原因 – danypata

+0

苹果公司可能不会允许这样做,因为他们不希望用户为自己的默认应用程序创建替代品,否则人们可能会创建一个应用程序,抬起摄像头。 –

相关问题