NSRulerView,将垂直度量扩展到底部

时间:2015-09-20 22:00:13

标签: objective-c macos cocoa nsview

我已经攻击了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;
    ...
}

下图是我所拥有的。

enter image description here

我的问题是,是否可以反转垂直测量。目前,0位于底部。是否可以将开头设置在顶部,然后将其向下延伸到底部?

感谢。

1 个答案:

答案 0 :(得分:2)

来自文档:

  

垂直标尺考虑是否翻转NSScrollView的文档视图的坐标系 - 而不是接收器的客户端视图。水平标尺总是翻转。

因此,您可以通过翻转文档视图的坐标系来解决此问题(您可以在视图上覆盖isFlipped)。

祝您好运 - 此API为over 15 years old:)