2016-04-21 1 views
1

для моего приложения. Я хочу создать пользовательский оверлей для камеры и создать UIImagePickerController для начала записи видео. (Ниже)xCode Создание UIImagePickerController и ссылка на него

- (IBAction)RecordVideo:(UIButton *)sender { 

    //initialise camera view 
    UIImagePickerController *cameraUI = [[UIImagePickerController alloc] init]; 
    cameraUI.sourceType = UIImagePickerControllerSourceTypeCamera; 
    cameraUI.cameraDevice = UIImagePickerControllerCameraDeviceFront; 
    cameraUI.showsCameraControls = NO; 
    cameraUI.navigationBarHidden = YES; 
    cameraUI.toolbarHidden = YES; 

    OverlayView *overlay = [[OverlayView alloc] 
         initWithFrame:CGRectMake(0, 0, 20,20)]; 

    cameraUI.cameraOverlayView = overlay; 

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

как часть cameraOverlayView я инстанцирован в UIButton:

- (id)initWithFrame:(CGRect)frame { 
    if (self = [super initWithFrame:frame]) { 
     //clear the background color of the overlay 
     self.opaque = NO; 
     self.backgroundColor = [UIColor clearColor]; 

     ... some overlay UI stuff 


     UIButton *captureBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     UIImage *captureBtnImg = [UIImage imageNamed:@"captureBtn.png"]; 
     [captureBtn setBackgroundImage:captureBtnImg forState:UIControlStateNormal]; 
     captureBtn.frame = CGRectMake(self.frame.size.width/2 - 15, 
             430, 
             80, 
             80); 
     [self addSubview:captureBtn]; 
    } 
    return self; 
} 

Так как я создаю IBAction для этой кнопки, которая может затем сделать запись UIImagePickerController cameraUI начала?

Если кто-то может также объяснить мне, как IBActions вызываются только с определенных кнопок, это также удивительно, потому что это кажется черной магией для меня?

ответ

1

Вы можете добавить цель, как это,

[captureBtn addTarget:self action:@selector(captureBtnclick:) forControlEvents:UIControlEventTouchUpInside]; 

и вы метод действия shoulbe как этот

-(void)captureBtnclick :(UIButton*)sender{ 

//handle your task on click here 

} 

второй вещь, почему вы добавляете слой на нем? Вы можете использовать запись видео по умолчанию из imagePicker, установив MEDIATYPE как

cameraUI.mediaTypes = [[NSArray alloc] initWithObjects: (NSString *) kUTTypeMovie, nil]; 

Update accroding комментировать

вы можете использовать по нажатию кнопки,

[picker startVideoCapture]; //in your case cameraUI i think 

Update 2:

в вашем .h файле,

@property UIImagePickerController *cameraUI; 

затем в вашем использовании метода RecordVideo как,

self.cameraUI = [[UIImagePickerController alloc] init]; 
self.cameraUI.sourceType = UIImagePickerControllerSourceTypeCamera; 

//etc..... 

Этим способом вы можете использовать camaraUI в целом класса по self

надеюсь, что это поможет :)

+0

Это очень полезно спасибо вы! Есть ли у вас какие-либо идеи относительно того, как мне следует начинать запись UIImagePickerController? –

+0

Почему вы добавляете overlayview? – Lion

+0

Мне нужно добавить пользовательский оверлей как часть спецификации дизайна. Мне нужно иметь только две кнопки (одна для записи и одна для записи). Я понимаю, что это способ сделать это? –