2011-08-22 30 views
4

我正在构建一个作为广告布局管理器的应用程序(桌面)。我正在使用的Indesign模板的测量值是英寸。例如,该杂志是8x10.5英寸。这样给用户的MAG页I放置NSScrollView,在主窗口中的视图和使用的72(每英寸象素)转换,然后显示标尺,像这样:Objective-C/XCode测量问题

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]; 

这个作品很好,但统治者出来英寸,是一点点关闭。

enter image description here

此外,通知图像中有启动关闭屏幕顶部和关闭时对观察中心紫色的矩形。这是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,视图的坐标对齐吗?

回答

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类文档的文档。

+0

谢谢蒂姆,我把它改成英寸,规则现在相匹配。不知道默认是什么。另外,我正在使用昨天的偏移量和垂直标尺,我将其更改为 - [vertRuler setOriginOffset:754.0];这将0点移到了标尺的顶部,但现在所有的数字都是负数。有没有办法只是翻转统治者? – PruitIgoe

+0

您是否尝试从Document NSView子类的isFlipped方法返回YES? –