Сбой iPad Photo Picker - PullRequest
       2

Сбой iPad Photo Picker

9 голосов
/ 29 августа 2011

Я использую следующую функцию для активации камеры устройства или средства выбора изображений в зависимости от результата UIActionSheet. если fromCamera = YES, то это работает как на iPhone, так и на iPad. если fromCamera = NO, то это работает на iPhone, и появляется средство выбора изображений. Но он падает на iPad со следующей ошибкой: UIStatusBarStyleBlackTranslucent недоступен на этом устройстве. Я уже знаю, что iPad не может отображать UIStatusBarStyleBlackTranslucent statusBar, но как избежать этого сбоя?

-(void)addPhotoFromCamera:(BOOL)fromCamera{

if(fromCamera){    
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
}
else{
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
}


[self presentModalViewController:picker animated:YES];

}

Ответы [ 3 ]

4 голосов
/ 17 апреля 2012

Если на iPad для селектора установить значение UIImagePickerControllerSourceTypePhotoLibrary, то вы должны (!) Представить его во всплывающем окне, иначе вы получите исключения. Я делаю это так, чтобы хотя бы контролировать размер поповера (на мой взгляд, стандартный размер слишком мал):

-(void)openPhotoPicker
{
    imagePicker = [[UIImagePickerController alloc] init];
    imagePicker.delegate = self;
    imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    imagePicker.navigationBar.opaque = true;

    //put the image picker in its own container controller, to control its size
    UIViewController *containerController = [[UIViewController alloc] init];
    containerController.contentSizeForViewInPopover = rightPane.frame.size;
    [containerController.view addSubview:imagePicker.view];

    //then, put the container controller in the popover
    popover = [[UIPopoverController alloc] initWithContentViewController:containerController];

    //Actually, I would like to do the following, but iOS doesn't let me:
    //[rightPane addSubview:imagePicker.view];

    //So, put the popover over my rightPane. You might want to change the parameters to suit your needs.
    [popover presentPopoverFromRect:CGRectMake(0.0, 0.0, 10.0,0.0) 
                     inView:rightPane
    permittedArrowDirections:UIPopoverArrowDirectionLeft
                   animated:YES];

    //There seems to be some nasty bug because of the added layer (the container controller), so you need to call this now and each time the view rotates (see below)
    [imagePicker.view setFrame:containerController.view.frame];
}

У меня также есть следующее, чтобы противостоять ошибке вращения:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
    if(imagePicker!=nil && rightPane.frame.size.width>0)
        [imagePicker.view setFrame:imagePicker.view.superview.frame];
}

Это не идеально, но на данный момент это нормально для моих целей тестирования. Я думаю написать свой собственный ImagePicker, потому что мне не нравится, когда меня заставляют использовать popoverview ... но, ну, это другая история.

3 голосов
/ 19 сентября 2011

Я подозреваю, что UIImagePicker наследует полупрозрачную строку состояния из вашего файла Info.plist или из отображаемого в данный момент контроллера представления.

Что произойдет, если у приложения не будет полупрозрачной строки состояния?

0 голосов
/ 20 октября 2011

У меня была похожая проблема, посмотрите мой ответ здесь:

https://stackoverflow.com/questions/7677058/uiimagepickercontroller-crash-in-ipad-ios5/7839969#7839969

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...