Membandingkan dua CGRects

95

Saya perlu memeriksa apakah bingkai pandangan saya sama dengan CGRect tertentu. Saya mencoba melakukan itu seperti ini:

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

Namun, saya mendapat kesalahan saat mengatakan Invalid operands to binary expression('CGRect' (aka 'struct CGRect') and 'CGRect'). Mengapa saya tidak bisa begitu saja membandingkan dua CGRect?

Tim Vermeulen
sumber

Jawaban:

250

Gunakan ini:

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

Lihat dokumentasi untuk CGRectEqualToRect ().

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

Di Swift 3 itu akan menjadi:

frame1.equalTo(frame2)
Julian Król
sumber
1
pada kenyataannya, equalTo(_:)sekarang sudah tidak digunakan lagi jadi ==lebih disukai.
olx
2

Di Swift, cukup gunakan operator ==or !=untuk saya:

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

cetakan konsol debug:

not equal
equal
zumzum
sumber