Добавление подпредставления в UIImagePickerController, а picker.showsCameraControls = YES; (?)

Я пытаюсь настроить представление, которое содержит кнопку поверх UIImagePickerControllerView. Я видел, что можно создать настройку представления OverlayView picker.showsCameraControls = NO; и добавление подпредставления к оверлею. Но я не хочу терять контроллеры, просто добавить кнопку сверху. Это возможно?

Вот мой код:

if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera])
{
    UIImagePickerController *imagePickerCam =
    [[UIImagePickerController alloc] init];
    imagePickerCam.delegate = self;
    imagePickerCam.sourceType =
    UIImagePickerControllerSourceTypeCamera;
    imagePickerCam.mediaTypes = [NSArray arrayWithObjects:
                                 (NSString *) kUTTypeMovie,
                                 nil];
    imagePickerCam.allowsEditing = NO;

    UIView *overlayView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
    UIButton *Button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [Button setFrame:CGRectMake(200, 480, 80, 80)];
    [Button addTarget:self action:@selector(action:) forControlEvents:UIControlEventTouchUpInside];
    [overlayView addSubview:Button];

    [imagePickerCam.view addSubview:overlayView];
    [overlayView bringSubviewToFront:imagePickerCam.view];

    [self presentModalViewController:imagePickerCam
                            animated:YES];
}

Я пытаюсь это:

 [imagePickerCam.view addSubview:overlayView];
 [overlayView bringSubviewToFront:imagePickerCam.view];

Конечно, это не работает. Любая идея?

1 ответ

Во-первых, вы должны использовать:

[imagePickerCam setCameraOverlayView: overlayView];

Таким образом, вам не нужно управлять порядком подпредставлений, поэтому вы можете удалить строку:

[overlayView bringSubviewToFront:imagePickerCam.view];

что, кстати, должно было быть наоборот:

[imagePickerCam.view bringSubviewToFront:overlayView];

Во-вторых, ваш оверлейный вид имеет высоту 480, и вы устанавливаете UIButton y смещение 480, так что кнопка выходит за пределы. Попробуйте что-то вроде:

UIView *overlayView = [[UIView alloc] initWithFrame:self.view.frame];
UIButton *Button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[Button setFrame:CGRectMake(200, self.view.frame.size.height - 80, 80, 80)];
Другие вопросы по тегам