比较两个CGRects

Tim*_*len 95 comparison cocoa-touch objective-c ios cgrect

我需要检查我的视图框架是否等于给定的CGRect.我尝试这样做:

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

但是,我说错了Invalid operands to binary expression('CGRect' (aka 'struct CGRect') and 'CGRect').为什么我不能简单地比较两个CGRect

Ame*_*777 247

用这个:

if (CGRectEqualToRect(self.view.frame, rect)) {
     // do some stuff
}
Run Code Online (Sandbox Code Playgroud)


Jam*_*ers 40

请参阅CGRectEqualToRect()的文档.

bool CGRectEqualToRect ( CGRect rect1, CGRect rect2 );
Run Code Online (Sandbox Code Playgroud)


Jul*_*ról 6

在Swift 3中它将是:

frame1.equalTo(frame2)
Run Code Online (Sandbox Code Playgroud)

  • 事实上,`equalTo(_:)` 现在已[弃用](https://developer.apple.com/documentation/coregraphics/cgrect/1456516-equalto),所以 `==` 是首选。 (2认同)