我正在构建一个广告布局管理器的应用(桌面)。我使用的Indesign模板的测量结果以英寸为单位。例如,杂志是8x10.5英寸。因此,为了给用户一个磁贴页面的视图,我在主窗口上放置一个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对齐?
答案 0 :(得分: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类文档的文档。