2011-08-22 58 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? –