簡體   English   中英

在CGAffineTransform之后獲得UIView的中心

[英]Get center of a UIView after CGAffineTransform

假設我有一個小的UIView作為一個更大的UIView的子/子視圖,那個孩子可以通過一些CGAffineTransforms移動。 父母如何知道該視圖的真正“中心”在其自己的坐標系中? 我已經嘗試將convertPoint例程與child.center返回的內容一起使用,但是它不起作用......在這種情況下,“中心”完全是假的還是我只是使用了錯誤的方法?

編輯:

做了一些測試后,我注意到以下幾點:

UIViews沒有anchorPoint屬性,但它們有一個center屬性。 應用變換后,始終會正確計算center屬性,但轉換變換除外,您必須執行以下操作:

CGPoint realCenter = CGPointMake(myView.center.x + myView.frame.origin.x, ...);

至於CALayer ,他們確實有一個anchorPoint屬性,但是他們缺少一個中心屬性。 因此,您要做的是通過對position屬性,anchorPoint屬性和圖層的轉換進行計算來手動計算中心。

我無法提供任何代碼,因為我不確定您使用的是哪種方法,但要將其包裝起來,您必須以任何方式推出自己的中心計算器。


請仔細查看下面的圖片(斯坦福iPhone開發課程幻燈片提供):

在應用任何輪換之前:

在此輸入圖像描述

施加45°旋轉后:

在此輸入圖像描述

結論:

請注意舊中心是如何(300,225)和新中心,而不是新的! 一樣的。 如果你正確地做了一切,你的中心應該是一樣的。 如果您在視圖中有另一個要計算的點,那么您自己就必須這樣做。

另請注意框架如何從(200,100,200,250)更改為(140,65,320,320)。 這就是UIKit如何發揮它的魔力。

暫無
暫無

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

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