Отображение UIView на масштабируемом CGRect iOS

Я использую API AVMetaData для извлечения границ AVMetadataFaceObject. При выводе на консоль этот CGRect имеет следующие значения: bounds={0.2,0.3 0.4x0.5}. У меня довольно много проблем с сопоставлением этого с UIView, который отображается на лице. Я могу жестко закодировать некоторые значения конверсии для моего конкретного экрана, чтобы он грубо находился в нужном месте, но мне нужно решение, которое отображает UIView поверх лица, показанного в моем PreviewView, на экране любого размера.

Кто-нибудь знает, как сопоставить их с рамкой экранного UIView в зависимости от размера предварительного просмотра?


person Alex Wulff    schedule 25.08.2015    source источник


Ответы (1)


Вы должны иметь возможность получить размер области захвата, давайте назовем это «captureSize», а затем сделайте следующее:

CGRect viewRect;
viewRect.origin.x = bounds.origin.x * captureSize.width;
viewRect.origin.y = bounds.origin.y * captureSize.height;
viewRect.size.width = bounds.size.width * captureSize.width;
viewRect.size.height = bounds.size.height * captureSize.height;

Теперь все зависит от того, как настроен ваш previewView и имеет ли он какое-либо масштабирование контента и т. д., но это должно дать вам представление о преобразовании.

person AlexKoren    schedule 25.08.2015