2

我需要通过其超类属性转换来旋转 UISlider,方法是通过以下方式更改旋转矩阵:

self.slider.transform = CGAffineTransformMakeRotation(45);

在 UIView 的文档中,我可以看到一条警告:

警告 如果此属性不是恒等变换,则 frame 属性的值未定义,因此应被忽略。

所以,问题是,我怎样才能在不弄乱框架矩形的情况下旋转标准 UIKit 元素?(我理解为未定义,他们的意思是,完全搞砸了,不仅仅是放大到足以包含整个旋转对象)

4

1 回答 1

0

基本上,当您在视图上设置变换时,您需要使用 bounds 和 center 属性来设置其大小和位置。在视图上设置框架时,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);
于 2014-07-26T06:53:27.433 回答