touchesBegan
我有这个,还有一些其他不相关的代码。
CGPoint center;
center = [[self.squareOne.layer presentationLayer] center];
squareOne
使用基于块的UIView animation
进行移动。动画代码:
self.squareOne.center = position;
self.squareOne.transform = CGAffineTransformMakeRotation((a + 1) * M_1_PI);
如果真的很重要,那就是position
:
position.x = self.widthOfScreen/8 + self.widthOfScreen;
position.y = y;
//y is any number between 0 and the height of the screen
但是当我点击屏幕时,我得到了可怕的:Thread 1: signal SIGABRT
错误。(我说touchesBegan
中的其他代码无关紧要,因为这 2 行代码是问题所在。其余的几乎只是 if 语句,最终只会squareOne
变得隐藏(。我问当我单击屏幕时如何获得UIImageView
中间动画的位置。你是否得到中心并不重要,我只想知道如何在squareOne
移动时获得位置的相对值。
我认为问题是表示层上没有中心,但你可以得到一个框架。试试这个...
CALayer *layer = self.squareOne.layer;
CGRect frame = [[layer presentationLayer] frame];
CGPoint center = CGPointMake(CGRectGetMidX(frame), CGRectGetMaxY(frame));
希望这有所帮助。