2012-03-03 180 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