99

我需要检查我的视图框架是否等于给定的 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')。为什么我不能简单地比较两个CGRects?

4

4 回答 4

257

用这个:

if (CGRectEqualToRect(self.view.frame, rect)) {
     // do some stuff
}
于 2013-09-16T03:44:04.483 回答
40

请参阅CGRectEqualToRect()的文档

bool CGRectEqualToRect ( CGRect rect1, CGRect rect2 );
于 2012-10-13T22:41:41.910 回答
6

在 Swift 3 中,它将是:

frame1.equalTo(frame2)
于 2017-06-19T16:11:37.527 回答
2

在 Swift 中,简单地使用==or!=运算符对我有用:

    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
于 2018-08-22T22:07:11.600 回答