Подтвердить что ты не робот

Включение кнопки библиотеки фотографий в UIImagePickerController

Кто-нибудь знает, как включить кнопку фотоальбома на UIImagePickerController, когда он находится в режиме камеры? Как то, как приложение камеры на iphone может переключаться между захватом изображения и видео, а также имеет кнопку для просмотра библиотеки фотографий?

4b9b3361

Ответ 1

Я боюсь, что это невозможно сделать таким простым способом (просто включите или отключите какую-нибудь магическую функцию). Для некоторых простых требований вы можете использовать cameraOverlayView и показываетCameraControls для выполните реализацию.

Если вы хотите переключиться между режимом фото/видео, я думаю, вы можете проверить это демо: http://developer.apple.com/library/ios/#samplecode/AVCam/Introduction/Intro.html

Ответ 2

Это можно сделать с помощью следующих строк:

- (void) navigationController: (UINavigationController *) navigationController  willShowViewController: (UIViewController *) viewController animated: (BOOL) animated {
    if (imagePickerController.sourceType == UIImagePickerControllerSourceTypePhotoLibrary) {
        UIBarButtonItem* button = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(showCamera:)];
        viewController.navigationItem.rightBarButtonItems = [NSArray arrayWithObject:button];
    } else {
        UIBarButtonItem* button = [[UIBarButtonItem alloc] initWithTitle:@"Library" style:UIBarButtonItemStylePlain target:self action:@selector(showLibrary:)];
        viewController.navigationItem.leftBarButtonItems = [NSArray arrayWithObject:button];
        viewController.navigationItem.title = @"Take Photo";
        viewController.navigationController.navigationBarHidden = NO; // important
    }
}

- (void) showCamera: (id) sender {
    imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
}

- (void) showLibrary: (id) sender {
    imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
}

Ответ 3

Вот пример приложения и очень простая библиотека, которая позволяет вам взять фотокамеру или выбрать из библиотеки так же, как это делает Facebook. https://github.com/fulldecent/FDTake

Ответ 4

Я сделал это приложение Apple PhotoPicker для настройки. Я удалил все элементы управления камерой и добавил свою собственную кнопку. При нажатии кнопки UIImagePickerControllerSourceType устанавливается UIImagePickerControllerSourceTypePhotoLibrary.

Трудная часть для меня была "увольнением" (может быть, технически неправильное слово), Photo Library после того, как изображение было выбрано. Я сделал это, установив тип источника обратно в UIImagePickerControllerSourceTypeCamera. Это возвращает изображение наложения камеры.

ViewController.h

#import <UIKit/UIKit.h>
#import <CoreGraphics/CoreGraphics.h>
#import <ImageIO/ImageIO.h>


@interface ViewController : UIViewController <UIImagePickerControllerDelegate> {

//

}

@property (nonatomic, strong) UIImagePickerController *imagePicker;
- (IBAction)uploadNewPhotoTapped:(id)sender;
@end


ViewController.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

 //Other code

- (IBAction)uploadNewPhotoTapped:(id)sender {

    UIImagePickerController *imagePickController=[[UIImagePickerController alloc]init];
    //You can use isSourceTypeAvailable to check

    if ([UIImagePickerController    isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
    {
        imagePickController.sourceType=UIImagePickerControllerSourceTypeCamera;
        imagePickController.showsCameraControls=YES;
        //  self.usingPopover = NO;
    }
    else if ([UIImagePickerController  isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {//Check PhotoLibrary  available or not
        imagePickController.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;
        imagePickController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    }
    else if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum]) //Check front Camera available or not
        imagePickController.sourceType=UIImagePickerControllerSourceTypeSavedPhotosAlbum;
    //else //!!!!!!!!!!!exception

    imagePickController.delegate=self;
    imagePickController.allowsEditing=NO;

    [self presentModalViewController:imagePickController animated:YES];
}


- (void)imagePickerController:(UIImagePickerController *)picker  didFinishPickingMediaWithInfo:(NSDictionary *)info {

    UIImage *originalImage=[info objectForKey:UIImagePickerControllerOriginalImage];

    //Do whatever with your image   
    NSData *data = UIImageJPEGRepresentation (
                                          originalImage,
                                          1.0
                                          );

    [self dismissModalViewControllerAnimated:YES];
}

   // Other code
   @end

Ответ 5

Swift2 версия кода @epsilontik:

    //mediaPicker is your UIImagePickerController
func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {
    if(mediaPicker.sourceType == UIImagePickerControllerSourceType.PhotoLibrary){
        let button = UIBarButtonItem(title: "Take picture", style: UIBarButtonItemStyle.Plain, target: self, action: "showCamera")
        viewController.navigationItem.rightBarButtonItem = button
    }else{
        let button = UIBarButtonItem(title: "Choose picture", style: UIBarButtonItemStyle.Plain, target: self, action: "choosePicture")
        viewController.navigationItem.rightBarButtonItem = button
        viewController.navigationController?.navigationBarHidden = false
        viewController.navigationController?.navigationBar.translucent = true
    }
}

func showCamera(){
    mediaPicker.sourceType = UIImagePickerControllerSourceType.Camera
}

func choosePicture(){
    mediaPicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
}