【发布时间】:2014-09-19 16:28:42
【问题描述】:
场景
假设有两个不相交的矩形,宽 10 磅,高 5 磅。以下模式中的 x/y 值表示两个矩形角点的坐标。
x/y = 0/0 +------------------+ x/y = 9/0
| |
| |
| |
| |
x/y = 0/4 +------------------+ x/y = 9/4
x/y = 0/5 +------------------+ x/y = 9/5
| |
| |
| |
| |
x/y = 0/9 +------------------+ x/y = 9/9
以下是设置这些矩形的代码:
CGRect rect1 = CGRectMake(0.0f, 0.0f, 10.0f, 5.0f);
CGRect rect2 = CGRectMake(0.0f, 5.0f, 10.0f, 5.0f);
CGRectGetMaxX
CGRectGetMaxX Core Graphics 函数的返回值记录如下:
矩形 x 坐标的最大值。
这里是使用函数的代码sn-p:
CGFloat maxX = CGRectGetMaxX(rect1);
根据文档,我预计 maxX 是 9。但是,maxX 是 10。嗯?
CGRectIntersection
CGRectIntersection Core Graphics 函数的返回值记录如下:
表示两个指定矩形相交的矩形。如果两个矩形不相交,则返回空矩形。要检查这种情况,请使用 CGRectIsNull。
这里是使用函数的代码sn-p:
CGRect intersectionRect = CGRectIntersection(rect1, rect2);
bool intersectionRectIsNull = CGRectIsNull(intersectionRect);
根据文档,我希望 intersectionRectIsNull 是真的,因为 rect1 和 rect2 显然不相交。但是,intersectionRectIsNull 是错误的。啊???
如果我们在调试器中检查intersectionRect,我们会看到:
(CGRect) $0 = origin=(x=0, y=5) size=(width=10, height=0)
是的,所以现在很清楚为什么 CGRectIsNull 返回 false,但到底为什么 intersectionRect 不是这个?
(CGRect) $0 = origin=(x=+Inf, y=+Inf) size=(width=0, height=0)
问题
有人能解释为什么这些函数的文档没有错吗?我一定是错过了什么,但我一辈子都看不到它是什么。
【问题讨论】:
标签: ios core-graphics