2012-02-01 71 views
10

我想以编程方式旋转视图,而且我用下面的代码:宽度和高度增加后CGAffineTransformRotate应用到一个UIView

CGAffineTransform rotateTransform = contentView.transform; 
CGAffineTransform rotatenewTransform = CGAffineTransformRotate(rotateTransform,aFloatRotate); 
contentView.transform = rotatenewTransform; 

当我做这个内容查看的宽度和高度(我UIView)增加。

我该怎么做才能让contentView保持原样并且它也旋转?

在此先感谢。

我在这里解释更多的细节我的问题:

我的内容查看包含一个按钮,并在它的ImageView的。 这个contentView添加在背景中,而且这个contentView不应该离开这个背景边界。

但是当我通过上面的代码旋转这个contentview时,contentView的widht和height会增加,所以有时候它会离开背景边界。

我希望这将清楚给你。 :)

+0

请选择答案,如果其确实 – GameLoading 2012-02-02 13:08:40

+1

@fasttrack 仍然面临同样的问题。 – Prashant 2012-02-21 04:36:12

+0

我找到了解决方案,为此我保存了视图的转换,现在它的工作正常。 – Prashant 2012-03-26 05:11:21

回答

9

宽度和高度(大概你从frame.size得到这个)不得不改变,因为它们描述了保存整个旋转视图的最小矩形 - 如果你旋转一个矩形45度,那么矩形保存旋转矩形比原始矩形更宽更高。

旋转视图的“实际”大小仍将在bounds矩形中可用 - 这在视图的未旋转的内部坐标系中表示。

所以,如果你原来的frame为原点(100,100),大小(100,50),你的旋转视图将有一个frame其中起点和大小,可以在它适合你的旋转视图中的矩形,在描述superview的坐标系。如果你现在这样做:

CGFloat width = contentView.frame.size.width; 

你会得到你改变的价值。但是,如果你这样做:

CGFloat width = contentView.bounds.size.width; 

你会得到你的原始100宽度值。

+0

能否请你用一些例子的代码来解释它。 – Prashant 2012-02-01 09:46:11

+0

我试图设置contentView的边界,但其子仍然不在contentView中。 – Prashant 2012-02-01 11:31:37

+0

我想旋转一个视图,但视图的宽度和高度不应改变。 – Prashant 2012-02-01 12:07:32

相关问题