Формула для создания CGRect для UIScrollView, который отображает UIImage в масштабе, подходящем - PullRequest
0 голосов
/ 03 июня 2010

Я загружаю изображения разных размеров и помещаю их в UIScrollViews, все изображения больше, чем UIScrollView. Пользователь может прокручивать и масштабировать по своему усмотрению, но изначально я хотел бы для изображения центрироваться и масштабироваться таким образом, чтобы наибольшая сторона изображения совпала с краем scrollView, т. е. если изображение в альбомной ориентации, я хотел бы изменить его размер и масштабировать так, чтобы левая и правая стороны проходили полностью до края UIScrollVIew и наоборот

Я нашел формулу в служебной функции в руководстве по программированию, но она не совсем соответствует моим потребностям.

Мой подход заключается в использовании:

CGrect initialPos = ?
[self.scrollView zoomToRect:initialPos animated:YES];

Я знаю размер моего scrollView и размер моего изображения, мне нужно выяснить масштаб и CGRect для применения к scrollView для центрирования и размера моего изображения.

Надеюсь, кто-то может помочь :) Спасибо

1 Ответ

1 голос
/ 03 июня 2010

Редактировать: предыдущая версия изменяла размер изображения для вида, а не наоборот. Я думаю, что это должно исправить это:

double imgRatio = imageSize.width / imageSize.height;
double viewRatio = viewSize.width / viewSize.height;

if ( imgRatio >= viewRatio )
{
    initialPos.size.width = imageSize.width;
    initialPos.size.height = imageSize.width / viewRatio;
    initialPos.origin.x = 0;
    initialPos.origin.y = (imageSize.height - initialPos.size.height) / 2;
}
else
{
    initialPos.size.height = imageSize.height;
    initialPos.size.width = imageSize.height * viewRatio;
    initialPos.origin.y = 0;
    initialPos.origin.x = (imageSize.width - initialPos.size.width) / 2;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...