2012-03-13 4 views
0

У меня проблема; Я использовал zxing-библиотеку для своего iPad-приложения; он отлично работает, чтобы прочитать код qr.zxing reader в ландшафтном режиме

Но его читатель в ландшафтном режиме поворачивает прямую трансляцию с камеры на 90 градусов вправо; Я хочу, чтобы он был без вращения, как в портретном режиме, где нет вращения.

в портретном режиме, подача видео не поворачивается, посмотрите in portrait mode , the video feed is not rotated;have a look

Но в Landscapemodeleft, подача видео повернута, посмотрите еще раз enter image description here

+0

вы реализован метод shouldRotateToInterfaceOrientation путем возврата ДА? – Ravin

+0

Да, я назначил ему ДА, читатель запускается в ландшафте, но также поворачивает прямую трансляцию до 90 градусов вправо, вот в чем проблема: он не должен вращать живой канал до 90 градусов, т. Е. Канал показывает все вертикальное, где, как и должно быть горизонтальный. –

ответ

8

Zxing библиотека использует AVFoundation основу для показать живую камеру. Этот слой (prevLayer) добавляется на уровне изображения ZXingWidgetController в способе initCapture. Поэтому всякий раз, когда вы вращаете камеру, этот слой также вращается. Чтобы сохранить этот слой в фиксированном положении, вам нужно будет повернуть его снова 0, M_PI, -M_PI/2, M_PI/2 в portrait, upsideDown, landscapeRight, landscapeLeft используя следующий поворот преобразования

CATransform3D transform = CATransform3DMakeRotation(angle, 0, 0, 1.0); 
self.prevLayer.transform =transform; 
self.prevLayer.frame = frame; // you may need to set it also if needed. 

+0

Преобразование CATransform3D = CATransform3DMakeRotation (190.7, 0, 0, 1.0); self.prevLayer.transform = transform; работает спасибо! –

+0

Спасибо большое !!! он работает. –

+0

Эй, спасибо, вы предпочли бы использовать M_PI_2 вместо M_PI/2, чтобы избежать неточности. В любом случае, хороший ответ! – dulgan

Смежные вопросы