NSRulerView,将垂直测量扩展到底部
NSRulerView, Extending Vertical Measures to the Bottom
我破解了 Apple 的名为 Rulers 的示例项目来创建一个简单的 NSView 子类以显示垂直和水平标尺。看起来像下面这样。
- (void)awakeFromNib {
NSScrollView *scrollView = [self enclosingScrollView];
if (!scrollView) return;
[scrollView setHasHorizontalRuler:YES];
[scrollView setHasVerticalRuler:YES];
[self setRulerOffsets];
[self updateRulers];
[scrollView setRulersVisible:YES];
return;
}
+ (void)initialize {
NSArray *upArray;
NSArray *downArray;
upArray = [NSArray arrayWithObjects:[NSNumber numberWithDouble:2.0], nil];
downArray = [NSArray arrayWithObjects:[NSNumber numberWithDouble:0.5],[NSNumber numberWithDouble:0.2],nil];
[NSRulerView registerUnitWithName:@"Grummets" abbreviation:NSLocalizedString(@"gt",@"Grummets abbreviation string") unitToPointsConversionFactor:100.0 stepUpCycle:upArray stepDownCycle:downArray];
return;
}
- (void)setRulerOffsets {
NSScrollView *scrollView = [self enclosingScrollView];
NSRulerView *horizRuler;
NSRulerView *vertRuler;
NSView *docView;
NSView *clientView;
NSPoint zero;
docView = [scrollView documentView];
clientView = self;
...
}
下图是我有的
我的问题是是否可以反转垂直测量值。现在,0 位于底部。可不可以把起点设置在顶部,然后向下延伸到底部?
谢谢。
来自文档:
A vertical ruler takes into account whether the coordinate system of the NSScrollView’s document view—not the receiver’s client view—is flipped. A horizontal ruler is always flipped.
因此,您可以通过翻转文档视图的坐标系来解决此问题(您可以覆盖视图上的 isFlipped
)。
祝你好运 — 这个 API 是 over 15 years old :)
我破解了 Apple 的名为 Rulers 的示例项目来创建一个简单的 NSView 子类以显示垂直和水平标尺。看起来像下面这样。
- (void)awakeFromNib {
NSScrollView *scrollView = [self enclosingScrollView];
if (!scrollView) return;
[scrollView setHasHorizontalRuler:YES];
[scrollView setHasVerticalRuler:YES];
[self setRulerOffsets];
[self updateRulers];
[scrollView setRulersVisible:YES];
return;
}
+ (void)initialize {
NSArray *upArray;
NSArray *downArray;
upArray = [NSArray arrayWithObjects:[NSNumber numberWithDouble:2.0], nil];
downArray = [NSArray arrayWithObjects:[NSNumber numberWithDouble:0.5],[NSNumber numberWithDouble:0.2],nil];
[NSRulerView registerUnitWithName:@"Grummets" abbreviation:NSLocalizedString(@"gt",@"Grummets abbreviation string") unitToPointsConversionFactor:100.0 stepUpCycle:upArray stepDownCycle:downArray];
return;
}
- (void)setRulerOffsets {
NSScrollView *scrollView = [self enclosingScrollView];
NSRulerView *horizRuler;
NSRulerView *vertRuler;
NSView *docView;
NSView *clientView;
NSPoint zero;
docView = [scrollView documentView];
clientView = self;
...
}
下图是我有的
我的问题是是否可以反转垂直测量值。现在,0 位于底部。可不可以把起点设置在顶部,然后向下延伸到底部?
谢谢。
来自文档:
A vertical ruler takes into account whether the coordinate system of the NSScrollView’s document view—not the receiver’s client view—is flipped. A horizontal ruler is always flipped.
因此,您可以通过翻转文档视图的坐标系来解决此问题(您可以覆盖视图上的 isFlipped
)。
祝你好运 — 这个 API 是 over 15 years old :)