Как сохранить положение прокрутки в NSScrollView при изменении масштаба?

у нас есть NSView (myView), завернутый в NSScrollView (myScrollView). Используя кнопки увеличения / уменьшения, пользователь может изменять масштаб myView. Если пользователь в данный момент прокручивается до определенного места в myView, яЯ хотел бы сохранить эту часть изображения на экране после увеличения.

у нас есть код, который выглядит следующим образом:

    // preserve current position in scrollview
    NSRect oldVisibleRect = [[myScrollView contentView] documentVisibleRect];
    NSPoint oldCenter = NSPointFromCGPoint(CGPointMake(oldVisibleRect.origin.x + (oldVisibleRect.size.width  / 2.0),
                                                       oldVisibleRect.origin.y + (oldVisibleRect.size.height / 2.0)));

    // adjust my zoom
    ++displayZoom;
    [self scaleUnitSquareToSize:NSSizeFromCGSize(CGSizeMake(0.5, 0.5))];
    [self calculateBounds];  // make sure my frame & bounds are at least as big as the visible content view
    [self display];

    // Adjust scroll view to keep the same position.
    NSRect newVisibleRect = [[myScrollView contentView] documentVisibleRect];
    NSPoint newOffset = NSPointFromCGPoint(CGPointMake((oldCenter.x * 0.5) - (newVisibleRect.size.width  / 2.0),
                                                       (oldCenter.y * 0.5) - (newVisibleRect.size.height / 2.0)));
    if (newOffset.x < 0)
        newOffset.x = 0;
    if (newOffset.y < 0)
        newOffset.y = 0;

    [[myScrollView contentView] scrollToPoint: newOffset];
    [myScrollView reflectScrolledClipView: [myScrollView contentView]];

И это вроде как близко, но этоне совсем верно, и я могуне могу понять, что яЯ делаю неправильно. Мои два вопроса:

1) Есть ли что-то встроенное в соответствии с:

   [myView adjustScaleBy: 0.5 whilePreservingLocationInScrollview:myScrollView];

2) Если нет, может кто-нибудь увидеть, что яделаю неправильно по моемудолгий путь " подход, выше?

Спасибо!

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

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