Subclass UIImagePickerController para agregar funcionalidad

Entonces, básicamente, lo que estoy tratando de hacer es cambiar el button de "tomar image", a un button personalizado mío. Y cuando el usuario cambie DeviceOrientation, el button cambiará según la orientación. Ya intenté usar la propiedad "overLay", pero parece que no es posible cambiar o mover el "overLay" una vez que se coloca. Entonces, he decidido subclasificar UIImagePickerController, ¡pero cuando lo llamo para presentar, la camera no se mostrará en absoluto!

Cualquier ayuda para comprender cuál es el problema ayudará … ¡Gracias!

Estas son las subclasss de vista viewController "UIImagePickerController":

@interface CameraViewController : UIViewController<UIImagePickerControllerDelegate> @interface CameraViewController () @property (nonatomic) pickerControllerMC *cameraPickerView; self.cameraPickerView = [[pickerControllerMC alloc]initWithNibName:@"pickerControllerMC" bundle:nil]; self.cameraPickerView.delegate = self; // Do any additional setup after loading the view. //create a new image picker instance //set source to video! self.cameraPickerView.sourceType = UIImagePickerControllerSourceTypeCamera; //hide all controls self.cameraPickerView.showsCameraControls = NO; self.cameraPickerView.navigationBarHidden = YES; self.cameraPickerView.toolbarHidden = YES; // self.delegate = self; //make the video preview full size self.cameraPickerView.wantsFullScreenLayout = YES; self.cameraPickerView.cameraViewTransform = CGAffineTransformScale(self.cameraPickerView.cameraViewTransform, CAMERA_TRANSFORM_X, CAMERA_TRANSFORM_Y); //Getting WidthAnd hight CGRect screen = [[UIScreen mainScreen] bounds]; //CGFloat widthInPixel = screen.size.width * scaleFactor; //CGFloat heightInPixel = screen.size.height * scaleFactor; int Width = screen.size.width; int hight = screen.size.height; [self presentViewController:self.cameraPickerView animated:YES completion:nil]; 

Y esta es la subclass:

  @interface pickerControllerMC : UIImagePickerController @implementation pickerControllerMC - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { [super viewDidLoad]; UIButton *buttonTakeImage = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [buttonTakeImage setBackgroundImage:[UIImage imageNamed:@"CameraButton@2x"] forState:UIControlStateNormal]; [buttonTakeImage addTarget:self action:@selector(takePictureClicked) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:self.overlay]; [self.view addSubview:buttonTakeImage]; //Adding orientation Notifications! [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(deviceOrientationDidChange:) name: UIDeviceOrientationDidChangeNotification object: nil]; } 

Editar

Ok, mi error fue que utilicé "initWithNibName", así que obtuve una pantalla de Nib blanca cada vez … todo bien.

Lo sentimos, no puedes subclasificar UIImagePickerController . De los documentos:

Importante: la class UIImagePickerController solo admite el modo retrato. Esta class está destinada a utilizarse tal cual y no admite subclasss. La jerarquía de vista para esta class es privada y no debe modificarse, con una exception. Puede asignar una vista personalizada a la propiedad cameraOverlayView y usar esa vista para presentar información adicional o administrar las interacciones entre la interfaz de la camera y su código.

Sin embargo, puede tener un control total sobre la toma de imágenes UI.