比较两个 CGRect
Posted
技术标签:
【中文标题】比较两个 CGRect【英文标题】:Comparing two CGRects 【发布时间】:2012-10-13 22:12:39 【问题描述】:我需要检查我的视图框架是否等于给定的 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
s?
【问题讨论】:
【参考方案1】:使用这个:
if (CGRectEqualToRect(self.view.frame, rect))
// do some stuff
【讨论】:
【参考方案2】:请参阅the documentation 获取 CGRectEqualToRect()。
bool CGRectEqualToRect ( CGRect rect1, CGRect rect2 );
【讨论】:
【参考方案3】:在 Swift 3 中它会是:
frame1.equalTo(frame2)
【讨论】:
事实上,equalTo(_:)
现在是deprecated 所以==
是首选。【参考方案4】:
在 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
【讨论】:
以上是关于比较两个 CGRect的主要内容,如果未能解决你的问题,请参考以下文章
如何从 CGPoint 和 CGSize 创建 CGRect?
CGRect Contains Point 不适用于不同的视图