Comparaison de deux CGRect

95

J'avais besoin de vérifier si le cadre de ma vue était égal à un CGRect donné. J'ai essayé de faire ça comme ça:

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

Cependant, j'ai eu une erreur en disant Invalid operands to binary expression('CGRect' (aka 'struct CGRect') and 'CGRect'). Pourquoi ne puis-je pas simplement comparer deux CGRects?

Tim Vermeulen
la source

Réponses:

250

Utilisez ceci:

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

Consultez la documentation de CGRectEqualToRect ().

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

Dans le Swift 3, ce serait:

frame1.equalTo(frame2)
Julian Król
la source
1
en fait, equalTo(_:)est désormais obsolète et ==est donc préférable.
olx
2

Dans Swift, le simple fait d'utiliser les opérateurs ==ou !=fonctionne pour moi:

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

la console de débogage imprime:

not equal
equal
zumzum
la source