Ios CGRectIntersectsRect与2个UIImageView不起作用

Ios CGRectIntersectsRect与2个UIImageView不起作用,ios,objective-c,uiimageview,cgrect,Ios,Objective C,Uiimageview,Cgrect,我有个问题 简而言之:CGRectIntersectsRect(object1.frame,object2.frame)放置在UIViewController中,不适用于在不同类(Class1和Class2)中创建的object1和object2。我只能更改它们的坐标,如object1.center.x,以及object1.frame.size.width=0(我想这就是cgrectcrossion函数不起作用的原因)。这些物体只是互相穿过 据我所知,这可能与协议/授权有关,但我还没有找到任何足

我有个问题

简而言之:
CGRectIntersectsRect(object1.frame,object2.frame)
放置在
UIViewController
中,不适用于在不同类(Class1和Class2)中创建的object1和object2。我只能更改它们的坐标,如
object1.center.x
,以及
object1.frame.size.width=0
(我想这就是
cgrectcrossion
函数不起作用的原因)。这些物体只是互相穿过

据我所知,这可能与协议/授权有关,但我还没有找到任何足够的信息来说明我的处境

Platform.m(用于在ViewController中创建平台的我的类)

ViewController.m(在@界面中有Platform*Platform;Kelvin*Kelvin;)


你的解释令人困惑,难以理解

例如,这句话对我来说完全是个谜:

据我所知,这可能与协议/授权有关,但我 我还没有找到足够的信息来说明我的处境

代表团?嗯?矩形不是对象。委托是对象的一种设计模式。这在这里有什么关系?(答:很可能根本不相关。)

不过,接下来要考虑以下几点:

只有当两个视图的框架都是同一视图的子视图时,它们才会使用相同的坐标系。您的平台和“开尔文”视图子视图是否为同一视图(看起来您将平台直接添加到视图控制器的内容视图,您的“开尔文”视图是否也是视图控制器的内容视图的子视图?)

此外,还可以参考
object1.frame.size.width=0


CGRectIntersectsRect函数检查两个矩形中是否有任何像素重叠。如果任一矩形的高度或宽度为0,则该矩形为空,并且不能与任何东西相交。

initWithFrame
中,您正在使用
平台的
框架向
平台添加
UIImageView
子视图。这是不正确的。例如,如果您在
CGRectMake(10,10,100,100)
中添加
PlatForm
,那么您将在
CGRectMake(10,10,100,100)
中添加图像视图(即原始视图中的
CGRectMake(20,20,100,100)

因此,我认为您应该创建一个从
0,0
开始的
CGRect
(或者使用
平台的
边界,而不是它的
框架
):


顺便说一句,为了安全起见,您可能还希望将
clipstobunds
设置为
YES
,这样,如果您将
contentMode
更改为不适合缩放的内容,您就不必担心图像溢出边界。

谢谢!这是我的错误,这两个对象,“平台”和“开尔文”是同一视图的子视图,但不是直接的,我在这里使用x和y坐标通过CGRectMake(0,0,frame.size.WITH,frame.size.height)放置了“开尔文”,因此后来它们在相交时具有不同的坐标。现在,我将它们的初始坐标都更改为0,0,并且可以正常工作!=)顺便说一句,您不显示
kelvin
的创建。它是与
平台
相同视图的子视图吗?如果它们不是同一视图的子视图,则必须将框架转换为同一坐标系。
@implementation Platform

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        platformView = [[UIImageView alloc]initWithFrame:frame];
        platformView.image = [UIImage imageNamed:@"platform.png"];

        [self addSubview:platformView];

    }
    return self;
}
-(void)addPlatform
   {
    platform = [[Platform alloc]initWithFrame:CGRectMake(initialPlatformX, (500 -    arc4random()%200), 200, 10)];
    [self.view addSubview:platform];
   }

    **if (!CGRectIntersectsRect(kelvin.frame, platform.frame)) {
        NSLog(@"%f", platform.frame.size.width);
    }**
@implementation Platform

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        platformView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height)];
        platformView.image = [UIImage imageNamed:@"platform.png"];

        [self addSubview:platformView];
    }
    return self;
}