#ios
#iOS
Вопрос:
Я пытаюсь заняться разработкой iOS, поэтому я все еще новичок. Мне удалось скопировать и вставить контроллер камеры (скопированный отсюда) и заставить его работать.
Однако я пытаюсь создать приложение для шпионской камеры, поэтому я не хочу, чтобы экран выглядел как камера. Я хочу покрыть его черным цветом. Я попытался установить яркость на 0, но это просто делает все тусклым. Установка черного фона также не сработала, поскольку вид с камеры находится на переднем плане. Есть ли способ создать экземпляр контроллера камеры и активировать аппаратное обеспечение камеры и каким-то образом отредактировать представление, которое поставляется вместе с ним, чтобы оно не отображалось?
#import "EMCameraController.h"
@interface EMCameraController ()
@property (strong, nonatomic) IBOutlet UIImageView *camera;
@end
@implementation EMCameraController
@synthesize camera=_camera;
- (IBAction)showCamera:(id)sender {
[self startCameraControllerFromViewController: self
usingDelegate: self];
NSLog(@"done!");
}
- (BOOL) startCameraControllerFromViewController: (UIViewController*) controller
usingDelegate: (id <UIImagePickerControllerDelegate,
UINavigationControllerDelegate>) delegate {
if (([UIImagePickerController isSourceTypeAvailable:
UIImagePickerControllerSourceTypeCamera] == NO)
|| (delegate == nil)
|| (controller == nil))
return NO;
UIImagePickerController *cameraUI = [[UIImagePickerController alloc] init];
cameraUI.sourceType = UIImagePickerControllerSourceTypeCamera;
// Displays a control that allows the user to choose picture or
// movie capture, if both are available:
cameraUI.mediaTypes =
[UIImagePickerController availableMediaTypesForSourceType:
UIImagePickerControllerSourceTypeCamera];
// Hides the controls for moving amp; scaling pictures, or for
// trimming movies. To instead show the controls, use YES.
cameraUI.allowsEditing = NO;
cameraUI.delegate = delegate;
[controller presentModalViewController: cameraUI animated: NO];
cameraUI.view.backgroundColor = [UIColor blackColor]; //<-- doesn't work since camera view is in foreground
[[UIScreen mainScreen] setBrightness:0.0]; //<-- not working the way I want it.
return YES;
}
@end
Ответ №1:
Вы должны использовать AVCapture*
подход. Это позволяет делать снимки непосредственно с камеры. Взгляните, например, на этот пример https://developer.apple.com/library/ios/samplecode/SquareCam/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011190-Intro-DontLinkElementID_2
Комментарии:
1. Другой пример использования AVFoundation: developer.apple.com/library/ios/samplecode/AVCam/Listings /…