Iphone xcode两个图像在实际接触之前相交

Iphone xcode两个图像在实际接触之前相交,iphone,xcode,animation,uiimageview,collision-detection,Iphone,Xcode,Animation,Uiimageview,Collision Detection,可能重复: 大家好,我是法国人,请听我说英语:我有两张图像LakeView和viewToRotate一张在移动,另一张在屏幕中央静止。我想要的是:如果flakeView和viewToRotate发生冲突:做点什么。但问题是它们在真正接触之前就相交了,我不知道问题出在哪里。 代码如下: UIImageView *flakeView = [[UIImageView alloc] initWithImage:flakeImage]; // use the random() function to

可能重复:

大家好,我是法国人,请听我说英语:我有两张图像LakeView和viewToRotate一张在移动,另一张在屏幕中央静止。我想要的是:如果flakeView和viewToRotate发生冲突:做点什么。但问题是它们在真正接触之前就相交了,我不知道问题出在哪里。 代码如下:

UIImageView *flakeView = [[UIImageView alloc] initWithImage:flakeImage];

// use the random() function to randomize up our flake attributes
int startX = round(random() % 480);




// set the flake start position
flakeView.center = CGPointMake(startX, -20.0);
flakeView.alpha = 1;

CGRect frame = CGRectMake(startX, -20.0, 30, 30);
flakeView.frame = frame;

// put the flake in our main view
[self.view addSubview:flakeView];

[UIView beginAnimations:nil context:flakeView];
// set up how fast the flake will fall
[UIView setAnimationDuration:7 ];

// set the postion where flake will move to
flakeView.center = viewToRotate.center;

// set a stop callback so we can cleanup the flake when it reaches the
// end of its animation
[UIView setAnimationDelegate:self];
[UIView commitAnimations];
if (CGRectIntersectsRect(flakeView.frame, viewToRotate.frame) == 1){
    //do something
}
}


我怎么才能解决这个问题呢?

你是说在图像接触之前,CGRectIntersectsRect是真的吗

如果UIImageView中的图形小于框架,UIImageView实际上会在可见图像接触之前接触甚至相交。我不知道这是不是你的问题

如果是这样,解决方案就是尽可能多地使用框架

另一个条件是UIImageView中有一个非矩形形状。如果您有圆的图像,那么当圆不接触但其帧接触时,CGRectIntersectsRect可以返回true


解决上述问题的方法是,用代码补充CGRectIntersectsRect以检查所描绘图像的边界,或者创建自己的碰撞检测代码。我更喜欢处理形状周围的独特情况。

您是否检查过图像没有任何透明像素?一种简单的方法是将UIView的背景色设置为某种颜色。您还设置了flakeView.frame=frame,但您确定这些是图像的尺寸吗???不,没有透明像素,是的,这是我的图像的尺寸。我们可以碰撞图像的中心和另一个图像的帧吗??如果可能的话,我们该怎么做呢?我认为你的图像视图太大了。。你有一个透明的图像。。。