Comparando dois CGRects

95

Eu precisava verificar se o quadro da minha visão é igual a um determinado CGRect. Tentei fazer assim:

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

No entanto, recebi um erro ao dizer Invalid operands to binary expression('CGRect' (aka 'struct CGRect') and 'CGRect'). Por que não posso simplesmente comparar dois CGRects?

Tim Vermeulen
fonte

Respostas:

250

Usa isto:

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

Consulte a documentação de CGRectEqualToRect ().

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

No Swift 3 seria:

frame1.equalTo(frame2)
Julian Król
fonte
1
na verdade, equalTo(_:)agora está obsoleto, por isso ==é preferível.
olx
2

No Swift, simplesmente usar os operadores ==ou !=funciona para mim:

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

depurar impressões do console:

not equal
equal
zumzum
fonte