我正在开发一个应用程序,其中一个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 ");
}
}
坚果我无法察觉它 不知道这里出了什么问题
答案 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)) 用这个检查交叉点!