Comparing two CGRects

31,077

Solution 1

Use this:

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

Solution 2

See the documentation for CGRectEqualToRect().

bool CGRectEqualToRect ( CGRect rect1, CGRect rect2 );

Solution 3

In the Swift 3 it would be:

frame1.equalTo(frame2)

Solution 4

In Swift simply using the == or != operators works for me:

    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")
    }

debug console prints:

not equal
equal
Share:
31,077
Tim Vermeulen
Author by

Tim Vermeulen

Swift and Rust programmer.

Updated on August 23, 2020

Comments

  • Tim Vermeulen
    Tim Vermeulen over 3 years

    I needed to check wether the frame of my view is equal to a given CGRect. I tried doing that like this:

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

    However, I got an error saying Invalid operands to binary expression('CGRect' (aka 'struct CGRect') and 'CGRect'). Why can't I simply compare two CGRects?

  • olx
    olx almost 6 years
    in fact, equalTo(_:) is now deprecated so == is preferred.