Vergleich zweier CGRects

95

Ich musste überprüfen, ob der Rahmen meiner Ansicht einem bestimmten CGRect entspricht. Ich habe das so versucht:

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

Ich habe jedoch eine Fehlermeldung erhalten Invalid operands to binary expression('CGRect' (aka 'struct CGRect') and 'CGRect'). Warum kann ich nicht einfach zwei CGRects vergleichen ?

Tim Vermeulen
quelle

Antworten:

250

Benutze das:

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

Siehe die Dokumentation zu CGRectEqualToRect ().

bool CGRectEqualToRect ( CGRect rect1, CGRect rect2 );
James Sumners
quelle
6

Im Swift 3 wäre es:

frame1.equalTo(frame2)
Julian Król
quelle
1
in der Tat equalTo(_:)ist jetzt veraltet, so ==wird bevorzugt.
Olx
2

In Swift funktioniert es für mich, einfach die Operatoren ==oder !=zu verwenden:

    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-Konsolendrucke:

not equal
equal
zumzum
quelle