2012-06-20 50 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);