移动时检查两个图像视图是否相交

时间:2011-12-15 10:02:22

标签: iphone uiimageview

我正在开发一个应用程序,其中一个imageview正在以圆形方向移动并检查它是否与任何其他视图相交

这是一个正在移动的图像视图

circleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo16.png"]];
circleView.frame = CGRectMake(30 , 30, 30, 30);

这是我想要检查它是否相交的另一个视图

detectrect=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"logo16.png"]];
detectrect.frame=CGRectMake(160, 160, 80, 80);



[self.view addSubview:detectrect];


[self.view addSubview:circleView];

现在我有一种方法,如果它们相互交叉,我会使用计时器检查

[NSTimer scheduledTimerWithTimeInterval:0.25 target:self selector:@selector(imageviewcoordinates) userInfo:nil repeats:YES];

-(void)imageviewcoordinates;

{

if (CGRectContainsRect([self.detectrect frame ],[self.circleView frame ]))
{
    NSLog(@" intersection ");
}

}

坚果我无法察觉它 不知道这里出了什么问题

3 个答案:

答案 0 :(得分:0)

我要做的第一件事就是将一些NSLog输出到调试区域(来自你的imageviewcoordinates方法):

NSLog(@" self.detectrect.frame.origin.x : %f ", self.detectrect.frame.origin.x);
NSLog(@" self.detectrect.frame.origin.y : %f ", self.detectrect.frame.origin.y);

NSLog(@" self.detectrect.frame.size.width : %f ", self.detectrect.frame.size.width);
NSLog(@" self.detectrect.frame.size.height : %f ", self.detectrect.frame.size.height);

NSLog(@" self.circleView.frame.origin.x : %f ", self.circleView.frame.origin.x);
NSLog(@" self.circleView.frame.origin.y : %f ", self.circleView.frame.origin.y);

NSLog(@" self.circleView.frame.size.width : %f ", self.circleView.frame.size.width);
NSLog(@" self.circleView.frame.size.height : %f ", self.circleView.frame.size.height);

为确保您获得一些值,您可以进行比较,这样就可以了解CGRectContainsRect失败的原因。

答案 1 :(得分:0)

嗨,之后我找到了一个解决方案 是Circular Rotation Of five buttons maintaining equal distance

真的是一个简单而且很棒的答案,oswome

由于 Amrut

答案 2 :(得分:0)

if(CGRectIntersectsRect(photo.frame,photo2.frame)) 用这个检查交叉点!