我已经攻击了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位于底部。是否可以将开头设置在顶部,然后将其向下延伸到底部?
感谢。
答案 0 :(得分:2)
来自文档:
垂直标尺考虑是否翻转NSScrollView的文档视图的坐标系 - 而不是接收器的客户端视图。水平标尺总是翻转。
因此,您可以通过翻转文档视图的坐标系来解决此问题(您可以在视图上覆盖isFlipped
)。
祝您好运 - 此API为over 15 years old:)