UIImageView. Увеличьте масштаб и отцентрируйте произвольный прямоугольник. Не могу определить правильный центр на экране

Есть простое приложение для iPad. Иерархия видов: Окно - UIView - UIImageView UIImageView загрузил изображение, которое больше размера экрана (то есть 1280 x 2000 против 768 x 1004). Мне нужно увеличить произвольную прямоугольную часть изображения (разместить ее на экране), а затем отцентрировать ее на экране. На данный момент я делаю масштабирование следующим образом:

-(IBAction)posIt:(id)sender
{
    // rectangle size and origin in image's coordinates. Its received from out of application
    CGFloat x = 550.f;
    CGFloat y = 1006.f;
    CGFloat w = 719.f;
    CGFloat h = 850.f;

    CGSize frameSize = CGSizeMake(_imgView.image.size.width, _imgView.image.size.height);
    _imgView.frame = CGRectMakeWithParts(CGPointMake(0, 0), frameSize);

    // Calculate center manually because orientation changing
    CGPoint superCenter = CGPointMake(self.view.bounds.size.width/2, self.view.bounds.size.height/2);

    // delta is the factor between size of image size and device screen
    CGFloat delta = 768.f/w;

    // resizing UIImageView to fit rectangle on the screen
    frameSize = CGSizeMake(_imgView.image.size.width * delta, _imgView.image.size.height * delta);
    _imgView.frame = CGRectMakeWithParts(CGPointMake(0, 0), frameSize);

    // Here is I'm trying to calculate center of rectangle
    _imgView.center = CGPointMake(superCenter.x + (superCenter.x - (w/2)*delta - x * delta), superCenter.y + (superCenter.y - (h/2)*delta - y * delta));
}

UIImageView»Параметр ContentMode имеет значение AspectFit. Я считаю, что для перемещения на одну точку (UIImageView 's center) к другому (чтобы переместить прямоугольник в центр superView), я буду использовать следующую формулу:

newX = oldX + oldX - rectCenterX;

newY = oldY + oldY - rectCenterY;

Поскольку UIImageView масштабируется сдельта фактор,rectCenterX а такжеrectCenterY должно быть умножено на то жедельта, Но я'Я не прав. Центры прямоугольников выскакивают из центра superView.

Существует ли какой-либо способ сделать эти вычисления правильно? Что мне не хватает?

Спасибо заранее. Я

Ответы на вопрос(1)

Ваш ответ на вопрос