Центрируйте NSView в NSScrollView

Выезд http://www.codeplex.com/white и http://nunitforms.sourceforge.net/ . Мы использовали Белый проект с успехом.

Тот же Ответ на предыдущий вопрос

Редактирование

Белый проект переместился и теперь расположен на GitHub как часть TestStack.

9
задан rhombus 20 November 2009 в 13:39
поделиться

1 ответ

Прочтите раздел Руководство по программированию прокрутки о прокрутке до определенной позиции. Там есть примеры для верха или низа. Вы просто измените математику, чтобы вычислить источник на основе середины вашего NSView. Что-то вроде:

-(void)scrollToCenter:(NSScrollView*)scrollView
{
    const CGFloat midX = NSMidX([[scrollView documentView] bounds]);
    const CGFloat midY = NSMidY([[scrollView documentView] bounds]);

    const CGFloat halfWidth = NSWidth([[scrollView contentView] frame]) / 2.0;
    const CGFloat halfHeight = NSHeight([[scrollView contentView] frame]) / 2.0;

    NSPoint newOrigin;
    if([[scrollView documentView] isFlipped])
    {
        newOrigin = NSMakePoint(midX - halfWidth, midY + halfHeight);
    }
    else
    {
        newOrigin = NSMakePoint(midX - halfWidth, midY - halfHeight);
    }

    [[scrollView documentView] scrollPoint:newOrigin];
}
11
ответ дан 3 November 2019 в 01:01
поделиться