Показывать затвор камеры программно?

#objective-c #cocoa-touch #ios #uiimagepickercontroller

#objective-c #cocoa-touch #iOS #uiimagepickercontroller

Вопрос:

Чтобы создать свой пользовательский UIImagePickerSourceTypeCamera , мне пришлось сделать это:

 pickerOne = [[UIImagePickerController alloc] init];
pickerOne.delegate = self;
pickerOne.sourceType = UIImagePickerControllerSourceTypeCamera;
pickerOne.showsCameraControls = NO;
pickerOne.navigationBarHidden = YES;
pickerOne.toolbarHidden = YES;
pickerOne.wantsFullScreenLayout = YES;
  

Но теперь, когда я делаю снимок, подобный этому:

 [cameraButton addTarget:pickerOne 
                 action:@selector(takePicture)
       forControlEvents:UIControlEventTouchUpInside];
  

при съемке затвор не отображается. Есть ли способ показать это программно?

Ответ №1:

Это возможно. Хитрость заключается в том, чтобы сделать следующее:

Включите элементы управления камерой при инициализации средства выбора (это позволит просматривать затвор).

 pickerOne.showsCameraControls = YES;
  

Наложите элементы управления камерой на свой собственный вид, который имеет cameraButton

В вашем takePicture: методе выполните следующее:

 pickerOne.showsCameraControls = NO;
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.0]];
[pickerOne takePicture];
  

В imagePickerController:didFinishPickingMediaWithInfo: методе выполните следующее:

 pickerOne.showsCameraControls = YES;  // perform on main thread
  

Комментарии:

1. Хорошо! Я попробую это.. Но я не думал, что вы могли бы наложить UIView с showCameraControls на? Если можно, то как?

2. Это должно сработать. Я делаю это на уровне камеры, вы можете использовать UIToolbar, например: UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0.0, 480.0-56.0, 320.0, 56.0)]; <toolbar init...> [pickerOne addSubview:toolbar];

Ответ №2:

Нет способа управлять эффектом «затвора». Однако вы можете создать свое собственное изображение и добавить в него эффект.

Комментарии:

1. Это то, что я подумал… Как бы я «создал свое собственное изображение и добавил этот эффект» туда? Не могли бы вы, пожалуйста, объяснить немного лучше? Спасибо.

2. Возможно, вы могли бы добавить UIImage дополнительный вид при съемке.