Нахождение текущего увеличения NSVIEW.
Q: Как я могу узнать, каков текущий масштаб координатного пространства NSVIEW, если он был изменен от значения по умолчанию?
A: Как я могу узнать, каков текущий масштаб координатного пространства NSVIEW, если он был изменен от значения по умолчанию?
NSView обеспечивает метод, -convertSize:fromView:, преобразовать размеры между координатными пространствами различных представлений в окне. При преобразовании известного размера от основного координатного пространства окна до того из NSView результатом является текущий уровень изменения масштаба.
Другой метод NSView, -scaleUnitSquareToSize:, устанавливает увеличение относительно существующей системы координат представления. При помощи категории Objective C для добавления нескольких методов к NSView мы можем обеспечить удобный API для масштабирования экземпляров NSView в свободных членах.
Перечисление 1 объявление категории ScaleUtilities
@interface NSView (ScaleUtilities) @property (assign) NSSize scale; - (void)resetScaling; @end |
Перечисление 2 реализация категории ScaleUtilities
@implementation NSView (ScaleUtilities)
static const NSSize unitSize = {1.0, 1.0};
// Returns the scale of the receiver's coordinate system, relative to the window's base coordinate system.
- (NSSize)scale;
{
return [self convertSize:unitSize toView:nil];
}
// Sets the scale in absolute terms.
- (void)setScale:(NSSize)newScale;
{
[self resetScaling]; // First, match our scaling to the window's coordinate system
[self scaleUnitSquareToSize:newScale]; // Then, set the scale.
[self setNeedsDisplay:YES]; // Finally, mark the view as needing to be redrawn
}
// Makes the scaling of the receiver equal to the window's base coordinate system.
- (void)resetScaling;
{
[self scaleUnitSquareToSize:[self convertSize:unitSize fromView:nil]];
}
@end |
История версии документа
| Дата | Примечания |
|---|---|
| 24.07.2009 | Обновленный код для использования свойств, агностических шириной скаляров и пробела. Перемещенный setNeedsDisplay: к «setScale»: и удаленное «scalePercent» свойство. |
| 08.03.2005 | Фиксированный опечатка в заголовках для списков. |
| 13.12.2004 | Была ошибка в реализации-resetScaling. Я делал-convertSize:toView: это должно было быть-convertSize:fromView: |
| 14.10.2004 | Новый документ, объясняющий, как обнаружить текущее увеличение (уровень изменения масштаба) любого NSView. |