Что делает автоматическое увеличение в 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 и другие, но я думаю, что они не нужны для того, чтобы ваши рисунки имели правильный размер.