移动旋转的UIButton

时间:2014-08-05 05:07:07

标签: ios objective-c uiimageview rotation

我有问题。我正在制作游戏。作为游戏的一部分,我需要旋转图像,然后在游戏循环内沿旋转角度的方向移动(使用NSTimer)。本质上,我试图创造发射射弹的效果。在垂直方向(例如0度,90度,180度,270度和360度)移动时,代码工作正常,但任何其他角度和图像开始出现故障。屏幕上的对象保持其正确的边界和内容,但实际显示的图像消失。有人知道问题是什么,或者我可以解决它吗?如果需要,我可以制作并发布我的问题视频,以便您可以看到我正在谈论的内容。

以下是我使用的代码示例。 "背景"变量只是UIImageView

angle = 60;
background.transform = CGAffineTransformRotate(object.transform, angle*M_PI/180); //converts degrees to radians and rotates the image
background.frame = CGRectMake( background.frame.origin.x + cos(angle*m_PI/180)*32; background.frame.origin.y -sin(angle*M_PI/180)*32, background.frame.size.width, background.frame.size.height); //moves the image in the direction of the angle

1 个答案:

答案 0 :(得分:1)

对于初学者来说,CGRect中的x原点后面有一个分号而不是逗号。那只是一个错字吗?

The UIView documentation for frame州:

  

警告:如果transform属性不是identity变换,那么   此属性的值未定义,因此应忽略。

     

可以设置对此属性的更改。但是,如果改造   property包含一个非标识变换,即帧的值   属性未定义,不应修改。在那种情况下,你   可以使用center属性重新定位视图并调整大小   使用bounds属性。

因此,您可以在设置自定义frame时尝试更改transform。您只是尝试调整视图的位置,因此只需修改代码即可调整center而不是原点坐标。

要更改尺寸,您可以使用bounds

CGRect bounds = myView.bounds;
bounds.size.width = whatever;
bounds.size.height = whatever;
myView.bounds = bounds;