3

я создал пользовательскую накладку для камеры, используя следующий код:iphone 5 - центр UIImagePickerController на экране

- (void) showCamera { 
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { 
    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.overlay = [[CameraOverlayViewController alloc] init]; 
    self.overlay.pickerReference = self.picker; 
    self.picker.cameraOverlayView = self.overlay.view; 
    self.picker.delegate = self.overlay; 

    [self presentViewController:self.picker animated:NO completion:nil]; 
} 

Он отлично работает на iPhone 4 (так как камера охватывает весь экран), но iphone 5 камера находится в верхней части экрана, оставляя черный квадрат внизу. Как я не могу изменить размер камеры, по крайней мере, я хочу сосредоточить ее в середине экрана, , а затем добавить UIViews в качестве полей (очень похоже на приложение Apple Camera Roll, где камера не находится в верхней части экрана , и есть элементы управления как выше, так и ниже).

Может кто-нибудь, пожалуйста, сообщите, как я могу управлять рамкой камеры в таком сценарии? Кроме того, поскольку поля будут только для более удобной визуализации, я не хочу показывать их на экране iphone 4 или ipad.

Заранее благодарен!

+0

ли вы когда-нибудь найти решение этой проблемы? У меня такие же проблемы. –

+0

Я использовал «быстрое и грязное» решение, возможно, не лучший способ сделать это: 'if (IS_IPHONE_5) { self.picker.cameraViewTransform = CGAffineTransformScale (self.picker.cameraViewTransform, 1, 1.7); } ' –

ответ

1

Используйте cameraViewTransform чтобы изменить камеру. y позиция. Например:

if(IS_IPHONE_5){ 
    CGAffineTransform tr = self.imagePickerController.cameraViewTransform; 
    tr.ty = 70; 
    self.imagePickerController.cameraViewTransform= tr; 
} 

где IS_IPHONE_5 является:

#define IS_IPHONE_5 (fabs((double)[ [ UIScreen mainScreen ] bounds ].size.height - (double)568) < DBL_EPSILON) 
1

Поскольку мы знаем, что камера всегда будет такой же длины, ширины экрана:

// получение высоты камеры за 4: 3

int cameraViewHeight = SCREEN_WIDTH * 1.333; 

// Получите разницу между высотой экрана и камерой высота. Распределить делением на 2.

int adjustedYPosition = (SCREEN_HEIGHT - cameraViewHeight)/2; 

// регулировки изображения контроллер сборщика

CGAffineTransform translate = CGAffineTransformMakeTranslation(0, adjustedYPosition); 
self.imagePicker.cameraViewTransform = translate; 
Смежные вопросы