Загрузка OverlayView из XIB -vs- программно для использования с UIImagePickerController - PullRequest
3 голосов
/ 21 марта 2010

В настоящее время я делаю приложение для камеры для iPhone, и у меня есть странное явление, которое я не могу понять.Я был бы признателен за помощь в понимании.

При воссоздании оверлейного представления для передачи в UIImagePickerController я успешно смог создать представление программным способом.Чего я не смог сделать, так это создать представление с / без контроллера в IB, загрузить его и успешно передать его наложенному указателю.Если я делаю это через IB, вид не является непрозрачным и полностью скрывает вид камеры.Я не могу понять, почему.

Я думал, что обычный указатель view может быть назначен при загрузке из XIB и, следовательно, перезаписать вид камеры, но у меня есть программный пример, где view и overlayView установлены равнымив классе контроллера.Возможно, порядок загрузки перезаписывает указатель?

Помощь была бы признательна ... С уважением.

Это прекрасно работает ...

    - (void)applicationDidFinishLaunching:(UIApplication *)application {

    // dislodge the MainView from the MainViewController
    //
    MainViewController *aController = [[MainViewController alloc] init]; //WithNibName:@"MainView" bundle:nil];

    aController.sourceType= UIImagePickerControllerSourceTypeCamera;
    aController.delegate= aController;

    aController.showsCameraControls= NO;

    // Programmatically load the MainView from the Nib and assign it as the OverlayView instead
    //
    NSArray* nibViews= [[NSBundle mainBundle] loadNibNamed:@"MainView" owner:aController options:nil];
    UIView* uiView= [nibViews objectAtIndex:0];
    uiView.opaque= NO;
    uiView.backgroundColor= [UIColor clearColor];
    aController.cameraOverlayView= uiView;

    self.mainViewController = aController;
    [aController release];

    mainViewController.view.frame = [UIScreen mainScreen].applicationFrame;

    [window addSubview:[mainViewController view]];
    [window makeKeyAndVisible]; 
}

Это НЕ ДЕЛАЕТ...

- (void)applicationDidFinishLaunching:(UIApplication *)application {

    // dislodge the MainView from the MainViewController
    //
    MainViewController *aController = [[MainViewController alloc] initWithNibName:@"MainView" bundle:nil];

    aController.sourceType= UIImagePickerControllerSourceTypeCamera;
    aController.delegate= aController;

    aController.showsCameraControls= NO;
    aController.cameraOverlayView= aController.view;

    self.mainViewController = aController;
    [aController release];

    mainViewController.view.frame = [UIScreen mainScreen].applicationFrame;

    [window addSubview:[mainViewController view]];
    [window makeKeyAndVisible];
}
...