Сравнение двух CGRects

95

Мне нужно было проверить, равен ли кадр моего представления заданному CGRect. Я пробовал сделать это вот так:

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

Однако я получил сообщение об ошибке Invalid operands to binary expression('CGRect' (aka 'struct CGRect') and 'CGRect'). Почему я не могу просто сравнить два CGRectс?

Тим Вермёлен
источник

Ответы:

250

Использовать это:

if (CGRectEqualToRect(self.view.frame, rect)) {
     // do some stuff
}
Амелия777
источник
6

В Swift 3 это будет:

frame1.equalTo(frame2)
Юлиан Крол
источник
1
фактически, equalTo(_:)теперь устарел, поэтому ==предпочтительнее.
olx
2

В Swift у меня работает простое использование операторов ==или !=:

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

печать консоли отладки:

not equal
equal
Zumzum
источник