簡體   English   中英

原點控件在界面構建器中做了什么?

[英]What does the origin control do in interface builder?

在界面構建器中,在支柱和彈簧檢查器中有一個標記為原點的控件。 這樣做以及為什么為一個對象更改它會為所有對象更改它?

原產地控制

據我所知,據我所知,它對框架矩形原點沒有任何實際影響。 讓我解釋:

選擇UILabel並將原點更改為如上圖所示位於右上角,將幀原點放在該點(280,11)。 但是,在代碼中,當您實際詢問幀的原點時,它被賦予(211,11),它對應於幀的左上角。 因此,在界面構建器中更改框架原點似乎絕對沒有任何作用! 這里發生了什么?!

除非您正在編輯緊鄰它的字段,否則它不會執行任何操作。 您會注意到X和Y坐標會根據您為其選擇的錨點而改變; 這意味着您可以更輕松地通過其中心或邊緣對齊對象。

它為所有對象更改的原因是它實際上不會影響對象本身的任何內容; 無論在那里顯示的X和Y值如何,“真實”坐標系保持不變。

在OS X上,正如內森所說,坐標系的原點在左下方,其坐標向上和向右增加; 在iOS上,原點位於左上角,其坐標向下和向右增加。

我現在不是確切的答案,但我認為它與您為該對象設置的原始代碼有關(僅舉例)

- (void) Button {

       CGRect frame = button.frame;
       frame.origin.x = 500; // new x coordinate
       frame.origin.y = 500; // new y coordinate
       button.frame = frame;
}

也許有一種方法可以將frame.origin設置為將其連接到InterFace Builder的原始工具的InterFace Builder

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaDrawingGuide/Transforms/Transforms.html

Cocoa使用笛卡爾坐標系作為指定坐標的基本模型。 此系統的原點位於當前繪圖空間的左下角,正值沿軸向上和原點右側延伸。 整個系統的根源位於包含菜單欄的屏幕的左下角。

如果您被迫在屏幕坐標中繪制所有內容 - 坐標系統的原點位於計算機主屏幕的左下角 - 您的代碼將非常復雜。 為簡化起見,Cocoa設置了一個局部坐標系,其原點等於即將繪制的窗口或視圖的原點。 窗口或視圖內的后續繪制調用相對於此局部坐標系進行。 一旦代碼完成繪制,Cocoa和底層圖形系統將本地坐標中的坐標轉換回屏幕坐標,以便內容可以與來自其他應用程序的內容合成並發送到圖形硬件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM