Что делает автоматическое увеличение в NSScrollView?

Я создал NSScrollView в IB и проверил allow magnification коробка. Что это на самом деле делает?

Вот что я нашел в примерах Apple, где реализовано ручное увеличение:

- (void)magnifyWithEvent:(NSEvent *)event {

    [resultsField setStringValue:

    [NSString stringWithFormat:@"Magnification value is %f", [event magnification]]];

    NSSize newSize;

    newSize.height = self.frame.size.height * ([event magnification] + 1.0);

    newSize.width = self.frame.size.width * ([event magnification] + 1.0);

    [self setFrameSize:newSize];

}

С помощью allow magnification также изменяет размер всего в представлении, так что это не может быть, как указано выше, установка размера кадра.
Так это что-то вроде использования scaleUnitSquareToSize: манипулировать системой координат?

1 ответ

Я не использовал это, но старый способ масштабирования содержимого представления состоял в том, чтобы изменять границы представления, сохраняя его кадр в том же размере. Это эффективно преобразовало систему координат, чтобы нарисовать все больше (и большинство вещей вне поля зрения).

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

Глядя на документы, похоже, что этот флажок устанавливает свойство -allowsMagnification. увеличение, по-видимому, имеет тот же эффект, что и изменение границ, но является независимым. Существует свойство увеличения, а также свойства minMagnification и maxMagnification. Таким образом, сжатие будет регулировать свойство увеличения, что, в свою очередь, приводит к увеличению рисунка.

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

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