4

我正在构建一个作为广告布局管理器的应用程序(桌面)。我正在使用的 Indesign 模板的尺寸以英寸为单位。例如,杂志是 8x10.5 英寸。因此,为了让用户查看 mag 页面,我在主窗口上放置了一个 NSScrollView,并使用 72(每英寸像素)的转换,然后显示标尺,如下所示:

displayPageRect=NSMakeRect(400.0, 70.0,72*8.125,72*10.5);
displayPage = [[NSScrollView alloc] initWithFrame:displayPageRect];

//set up the rulers display
[displayPage setRulersVisible:YES];
[displayPage setHasVerticalRuler:YES];
[displayPage setHasHorizontalRuler:YES];

 //set up border color and width
 [displayPage setBorderType:NSLineBorder];

 //display the displayPage on the screen
 [[mainWin contentView] addSubview:displayPage];

这很好用,但尺子以英寸为单位,有点偏离。

在此处输入图像描述

此外,请注意图像中有一个紫色矩形,它从屏幕顶部开始并偏离视图中心。这是 NSScroll 的子视图,假设代表页面的边距。这也关了。

    //make a new page element for page borders
PageElements* pageBorders = [PageElements new];
NSColor* borderColor = [NSColor purpleColor];
[pageBorders setColor:borderColor];
[pageBorders initWithFrame:NSMakeRect(72*.313, 72*.375, 72*7.499, 72*9.875)];
[[displayPage contentView] addSubview:pageBorders];

显然我在转换/展示位置做错了什么。有人可以纠正我吗?另外,有没有办法让标尺的 0,0 与视图的 x=0、y=0、坐标对齐?

4

1 回答 1

3

尝试使用相关的 NSRulerView 的适当属性进行试验:

NSRulerView *hRuler = [displayPage horizontalRulerView];
[hRuler setMeasurementUnits:@"Points"]; // User whatever registered units you want here
[hRuler setOriginOffset:5.0]; // Experiment with this number to see way works for you

请注意,您在设置测量单位时使用的单位必须注册。注册了一些默认值,或者您可以使用自己的。有关配置标尺视图的各种方式的更多信息,请参阅 NSRulerView 类文档的文档。

于 2011-08-22T21:11:08.267 回答