Как изменить заголовок кнопки отмены в UIImagePickerController?

В настоящее время я работаю над многоязычным приложением и хочу изменить названия кнопок Cancel, Use и Retake в UIImagePickerController. Как я могу это сделать?


person Balu    schedule 08.05.2013    source источник


Ответы (6)


Моя проблема решается с помощью пользовательского класса наложения.

self.picker = [[UIImagePickerController alloc] init];
self.picker.sourceType = UIImagePickerControllerSourceTypeCamera;
self.picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
self.picker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
self.picker.showsCameraControls = NO;
self.picker.navigationBarHidden = YES;
self.picker.toolbarHidden = YES;
self.picker.wantsFullScreenLayout = YES;

// Insert the overlay
self.overlay = [[OverlayViewController alloc] initWithNibName:@"Overlay" bundle:nil];
self.overlay.pickerReference = self.picker;
self.picker.cameraOverlayView = self.overlay.view;
self.picker.delegate = self.overlay;

[self presentModalViewController:self.picker animated:NO];
person Balu    schedule 08.05.2013

Просто добавьте необходимые локализации в свой проект:
1) Выберите файл проекта;
2) Выберите свой проект в списке "Проекты и цели";
3) Выберите "Информация" (в верхней части screen);
4) Добавьте необходимые языки в разделе "Локализации".

person Roman Figurin    schedule 08.09.2014
comment
Средство выбора встроено, и в случае установки языка без перезапуска приложения этот способ не сработает. - person Nik Kov; 10.06.2018

Он будет автоматически изменен на язык устройства.

Вам не нужно беспокоиться об этом. Также вы не можете изменить его поведение.

Элементы управления, такие как: MFMessageComposer, MFMailComposer, UIImagePicker и т. д. Автоматически изменит текст элементов управления по умолчанию на язык устройства.

person Midhun MP    schedule 08.05.2013
comment
если язык устройства английский, и я хочу изменить названия в то время, как мы можем добиться этого? - person Balu; 08.05.2013

Назначьте делегата как самого себя вашему контроллеру средства выбора изображений и добавьте следующий код:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {

     UINavigationItem *ipcNavBarTopItem;

    // add done button to right side of nav bar
    UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:@\"Done\"
                            style:UIBarButtonItemStylePlain 
                            target:self 
                            action:@selector(saveImages:)];

    UINavigationBar *bar = navigationController.navigationBar;
   [bar setHidden:NO];
       ipcNavBarTopItem = bar.topItem;
       ipcNavBarTopItem.title = @\"Pick Images\";
   ipcNavBarTopItem.rightBarButtonItem = doneButton;
}
person Anil    schedule 08.05.2013

Единственное хорошее решение здесь ...

//this is your camera method
- (void)startCameraControllerUsingDelegate:(id<UIImagePickerControllerDelegate, UINavigationControllerDelegate>)delegate gallery:(BOOL)openGallery
{
    if (([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] == NO)
        || (delegate == nil))
        return;

    UIImagePickerController *cameraUI = [[UIImagePickerController alloc] init];
    if (openGallery) {
        cameraUI.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    } else {
        cameraUI.sourceType = UIImagePickerControllerSourceTypeCamera;
    }

    cameraUI.allowsEditing = YES;
    //set your delegate type UINavigationControllerDelegate here! It will trigger function bellow!
    cameraUI.delegate = delegate;

    [self presentViewController:cameraUI animated:YES completion:nil];
}

//UINavigationControllerDelegate function
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    //this is where magic happends! This leaves button empty and it will not ruin title center position!... or give it your desired string
    viewController.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
}
person Pan Mluvčí    schedule 27.02.2018

Просто найдите и измените текст UIButton

-(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
    {
        for (UIView *v in viewController.view.subviews)
        {
            if ([v isKindOfClass:[NSClassFromString(@"CMKBottomBar") class]])
            {
                SEL se = NSSelectorFromString(@"cancelButton");

                if ([v respondsToSelector:se])
                {
                    UIButton *cancelButton =  [v performSelector:se];
                    [cancelButton setTitle:@"New title" forState:UIControlStateNormal];
                }

            }
        }
    }
person Thanh Vu    schedule 07.09.2016