比较两个CGRects

时间:2012-10-13 22:12:40

标签: ios objective-c cocoa-touch comparison cgrect

我需要检查我的视图框架是否等于给定的CGRect。我试着这样做:

CGRect rect = CGRectMake(20, 20, 20, 20);
if (self.view.frame == rect)
{
    // do some stuff
}

但是,我收到错误Invalid operands to binary expression('CGRect' (aka 'struct CGRect') and 'CGRect')。为什么我不能简单地比较两个CGRect s?

4 个答案:

答案 0 :(得分:241)

使用此:

if (CGRectEqualToRect(self.view.frame, rect)) {
     // do some stuff
}

答案 1 :(得分:40)

有关CGRectEqualToRect()的信息,请参阅the documentation

bool CGRectEqualToRect ( CGRect rect1, CGRect rect2 );

答案 2 :(得分:6)

在Swift 3中它将是:

frame1.equalTo(frame2)

答案 3 :(得分:1)

在Swift中,只需使用==!=运算符即可为我工作:

    let rect = CGRect(x: 0, y: 0, width: 20, height: 20)

    if rect != CGRect(x: 0, y: 0, width: 20, height: 21) {
        print("not equal")
    }

    if rect == CGRect(x: 0, y: 0, width: 20, height: 20) {
        print("equal")
    }

调试控制台打印:

not equal
equal