web-dev-qa-db-ja.com

2つのCGRectの比較

ビューのフレームが指定された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')というエラーが発生しました。 2つのCGRectsを単純に比較できないのはなぜですか?

93
Tim Vermeulen

これを使って:

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

CGRectEqualToRect()については ドキュメント をご覧ください。

bool CGRectEqualToRect ( CGRect rect1, CGRect rect2 );
40
James Sumners

Swift 3では、次のようになります。

frame1.equalTo(frame2)
6
Julian Król

In 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
2
zumzum