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

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

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

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 и имеет ли он какое-либо масштабирование контента и т. Д., Но должен дать вам представление о преобразовании.

Другие вопросы по тегам