旋转45°的UIView消失了吗?

Chr*_*len 8 objective-c uiview cgaffinetransform ios

也许我没有得到.当我做

self.tweetPeak.transform = CGAffineTransformMakeRotation(RADIANS(45));
Run Code Online (Sandbox Code Playgroud)

RADIAN在哪里

#define RADIANS(degrees) ((degrees * M_PI) / 180.0)
Run Code Online (Sandbox Code Playgroud)

在一个简单的UIView对象上它将消失.

我想这只是为了看到它.我的印象是视图在20到45度之间变小.

它是什么?我试图将视图设置为不透明.没有效果.

克里斯

小智 12

您需要在旋转后停止调整框架,这会导致对变换矩阵的不期望的拉伸,我不确定正式的原因,但它与Apple使用自己的矩阵系统而不是传统矩阵来表示2D有关/ 3D翻译/旋转/缩放.前几天我遇到了同样的问题,为了修复它,而不是旋转那个视图,我只是把它变成了一个容器,里面有我希望旋转的实际视图,然后旋转它.

  • CGAffineTransform和CATransform3D绝对是标准的传统矩阵.Apple并没有做任何奇怪的事情.你的问题是` - [CALayer frame]`是一个_derived_值 - 它基于`position`,`bounds`,`anchorPoint`和`transform`属性.如果更改变换,框架将更改.如果您然后尝试更改框架,图层将尝试调整位置和bounds.size以使其工作.解决方案:不要设置框架. (3认同)