2012-06-20 86 views
2

我需要通過它的超產權旋轉UISlider變換,通過改變旋轉矩陣的UIKit元素:旋轉不會弄亂框架

self.slider.transform = CGAffineTransformMakeRotation(45); 

在文檔的UIView,我可以看到警告提示:

警告如果此屬性不是標識轉換,則 的值屬性未定義,因此應予以忽略。

所以,問題是,我如何旋轉標準的UIKit元素而不會搞亂幀矩形? (通過未定義我明白,他們的意思是,完全搞砸了,不只是放大到足以包含整個旋轉的對象)

+0

爲什麼是搞亂框架矩形對你很重要?你在輪換之後使用了什麼?順便說一句,[CGAffineTransformMakeRotation需要弧度,而不是度](https://developer.apple.com/library/mac/#documentation/graphicsimaging/reference/CGAffineTransform/Reference/reference.html) – Nate

+0

我很擔心它可能有一個對元素的行爲產生影響,並且我可能遇到一些問題,以後在屏幕上正確放置/替換該元素。 – foFox

+0

您是否在稍後通過設置'self.slider.frame = newFrame;'來專門在此滑塊上執行手動佈局?例如,如果您已添加旋轉變換,並且稍後需要翻譯或縮放滑塊,則應將這些新變換添加到現有旋轉。變換矩陣可以是幾種不同操作的組合。 – Nate

回答

0

基本上,當您在視圖上設置轉換時,您將需要通過使用邊界來設置其大小和位置和中心屬性。在視圖上設置框架時,UIKit實際上會在視圖上設置邊界/中心/轉換。

因此,如果不設置轉換,您可以像這樣設置幀。

self.slider.frame = CGRectMake(10, 20, 300, 50); 

當使用變換,你會做這樣的:

self.slider.transform = CGAffineTransformMakeRotation(45); 
self.slider.bounds = CGRectMake(0, 0, 300, 50); 
self.slider.center = CGRectMake(10, 20, 300, 50);