проблема CameraOverlayView на iOS 4.3 - PullRequest
7 голосов
/ 10 мая 2011

Я использую контроллер выбора с CameraOverlayView для отображения изображения продукта в представлении камеры.Изображение продукта изменяется перед наложением.На iOS 4.2 он работает нормально, но на iOS 4.3 изображение продукта отображается в полном размере.

pickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
UIImageView *imgView =  [[[UIImageView alloc] initWithImage:[UIImage imageNamed:produitAffiche.img_realite]] autorelease];

// Resize
if(imgView.frame.size.height == 480)
{
    //Portrait
    imgView.frame = CGRectMake(80.0f, 120.0f, 160.0f, 240.0f);
}
else
{
    // Landscape
    imgView.frame = CGRectMake(40.0f, 160.0f, 240.0f, 160.0f);
}

imgView.contentMode = UIViewContentModeCenter;
imgView.clipsToBounds = NO;
imgView.contentMode = UIViewContentModeScaleAspectFit;  

pickerController.cameraOverlayView = (UIView *) imgView;

Я изменил кадр UIImageView, который я использую в качестве наложения, но он по-прежнему отображается при 320 * 480.Я знаю, что cameraOverlayView был изменен в iOS 4.3, но я не знаю, что изменилось и что мне нужно сделать, чтобы исправить свое приложение.

Спасибо за вашу помощь.

Ответы [ 5 ]

2 голосов
/ 02 сентября 2011

В iOS 4.3 вид наложения растягивается на весь экран. Поскольку вы устанавливаете режим содержимого для подгонки аспекта, изображение растягивается, чтобы соответствовать новому размеру представления, равному 320x480.

Вам нужно сделать прозрачный UIView в полноэкранном режиме, добавить просмотр изображения в этот вид и сделать UIView новым видом наложения.

UIView *fullscreenView = [[UIView alloc] initWithFrame:CGRectZero];
fullscreenView.backgroundColor = [UIColor clearColor];
....
 [fullscreenView addSubview:imgView];
pickerController.cameraOverlayView = fullscreenView;
0 голосов
/ 02 февраля 2012

Моя проблема была в том, что UIImagePicker, отображаемый в полноэкранном режиме на iOS5, не работал на iOS4.3, на iPad. Я запускал сборщик изображений за кадром, а затем анимировал его в поле зрения ... Вы бы увидели, что изображение затвора открывается, но тогда само изображение камеры было просто прозрачным без вывода изображения с камеры.

Мое решение состояло в том, чтобы не анимировать это для iOS4.3 на iPad. Кажется, что запуск камеры за кадром оставлял часть рендеринга камеры позади (исправлено, как я заметил в iOS5).

Этот ответ не совсем подходит для исходного вопроса, но я помещаю его здесь для кого-то, кто сталкивается с той же проблемой и сталкивается с этим вопросом, как и я.

0 голосов
/ 07 июля 2011

Закомментируйте эту строку в вашем коде

imgView.clipsToBounds = NO;

Это должно работать. Если вы действительно хотите обрезать, ответ @slf должен помочь.

0 голосов
/ 23 июля 2011

попробуйте установить эти свойства UIImagePicker:

mImagePickerController.showsCameraControls = NO;

mImagePickerController.navigationBarHidden = YES;

mImagePickerController.toolbarHidden = YES;

mImagePickerController.wantsFullScreenLayout = YES;
0 голосов
/ 16 июня 2011

Найдено эта статья , которая, кажется, отвечает всем требованиям.Короче говоря, это использовать

- (UIImage *)
  resizedImageWithContentMode:(UIViewContentMode)contentMode
                       bounds:(CGSize)bounds
         interpolationQuality:(CGInterpolationQuality)quality;
...