2012-03-03 135 views
6

也許我沒有得到。當我做UIView旋轉45°消失?

self.tweetPeak.transform = CGAffineTransformMakeRotation(RADIANS(45)); 

其中弧度

#define RADIANS(degrees) ((degrees * M_PI)/180.0) 

一個簡單的UIView對象時,它就會消失。

我想這只是爲了看清。我的印象是,視角在20至45度之間變小。

這是什麼?我試圖設置視圖不透明。沒有效果。

克里斯

+0

它可能被旋轉出屏幕嗎? – 2012-03-03 15:08:31

+0

不相關,但'RADIONS'是這個定義的一個可怕的名字。它沒有指出它在做什麼或如何使用它。 – 2012-03-03 15:10:39

+0

@ Paul.s這是一個風格問題,國際海事組織,這是一個宏的好名字,但我已經看到它標有'TO_RADIANS','DEGREES_TO_RADIANS'等。這隻取決於你需要什麼。 – 2012-03-03 15:13:58

回答

9

你需要停止旋轉後調整框架,它會導致不想要的延伸到變換矩陣,我不確定到正規的理由,但它有什麼用自己的與蘋果做矩陣系統而不是傳統矩陣來表示2D/3D平移/旋轉/縮放。我前幾天遇到了同樣的問題,爲了修復它,而不是旋轉那個視圖,我只是將它製作成一個容器,其中包含我想要旋轉的實際視圖並將其旋轉。

+3

CGAffineTransform和CATransform3D是絕對標準的傳統矩陣。蘋果公司在那裏沒有做任何奇怪的事情。你的問題是' - [CALayer框架]'是一個_derived_值 - 它基於'position','bounds','anchorPoint'和'transform'屬性。如果您更改轉換,框架將會改變。如果您嘗試更改框架,圖層將嘗試調整位置和bounds.size以使其工作。解決方案:不要設置框架。 – 2012-03-04 00:15:14

+0

如果一個CATransform3D是一個傳統的矩陣,我怎麼不能設置,比如說傳統的正交矩陣,仍然可以看到我的圖層?或者是一個透視呢?我的意思是我沒有懷疑你,但他們並沒有使用它,傳統上,爲什麼.m34控制類似FOV的東西?如果你問我,這些都不是很標準。但我可能是錯的。 – 2012-03-04 02:37:35

+0

我一直在尋找相當一點,試圖弄清楚這一點。你的兩條評論確實幫助我理解了我的問題。對於遇到此問題的其他人,我進行了一些初始化,希望旋轉一些標籤。我有這viewDidLoad ...我不得不將它移動到viewDidAppear讓事情正常工作(因爲框架仍然被設置,直到viewWillAppear後)。 – 2013-01-09 07:43:47