Ios 为什么CGRectInfinite和所有成员都设置为无穷大的CGRect之间存在差异?
在使用(无内容)SpriteKit节点时,我遇到了一个无限矩形Ios 为什么CGRectInfinite和所有成员都设置为无穷大的CGRect之间存在差异?,ios,objective-c,cgrect,infinity,Ios,Objective C,Cgrect,Infinity,在使用(无内容)SpriteKit节点时,我遇到了一个无限矩形 NSLog(@"%@", NSStringFromCGRect([node calculateAccumulatedFrame])); 哪个输出 {{inf, inf}, {inf, inf}} 我本想用CGRectIsInfinite检查这个问题,但是测试失败了,这导致我尝试下面的检查 CGRect rect = [node calculateAccumulatedFrame]; if (rect.origin.x == IN
NSLog(@"%@", NSStringFromCGRect([node calculateAccumulatedFrame]));
哪个输出
{{inf, inf}, {inf, inf}}
我本想用CGRectIsInfinite
检查这个问题,但是测试失败了,这导致我尝试下面的检查
CGRect rect = [node calculateAccumulatedFrame];
if (rect.origin.x == INFINITY && rect.origin.y == INFINITY &&
rect.size.width == INFINITY && rect.size.height == INFINITY) {
if (!CGRectIsInfinite(rect)) {
NSLog(@"I don't get it");
}
}
它的输出:我不明白
,这很好地概括了我现在的立场
正如allestuetsmerweh
在回答中指出的那样,对于CGRectInfinite
,函数确实返回true,当我输出这个矩形时,我得到
{{-8.9884656743115785e+307, -8.9884656743115785e+307}, {1.7976931348623157e+308, 1.7976931348623157e+308}}
(大小均为DBL\u MAX
)
CGRectInfinite
是一个将某些值设置为DBL_MAX i.s.o.的矩形,一个将所有元素设置为无限
的矩形,其背后的原因是什么?(当API返回CGRect时,所有成员都设置为无穷大)或者更确切地说,为什么元素设置为
INFINITY
的矩形不注册为CGRectIsInfinite
CGRect r = CGRectInfinite;
NSLog(@"%i", CGRectIsInfinite(r)); //prints "1"
从文档中:
无限矩形是没有定义边界的矩形。可以将无限矩形创建为平铺过滤器的输出。例如,核心图像框架透视图块过滤器创建一个图像,其范围由一个无限矩形描述
从文档中:
无限矩形是没有定义边界的矩形。可以将无限矩形创建为平铺过滤器的输出。例如,核心图像框架透视图块过滤器创建一个图像,其范围由一个无限矩形描述
CGRectInfinite是一个矩形,其中一些值设置为DBL_MAX i.s.o。一个所有元素都设置为无穷大的矩形,其背后的原因是什么
以下是一些猜测:
CGRectInfinite
的值不明确)CGRectIsInfinite
将其参数与cgrectinifinite
进行比较(在某些API中具有特殊含义,因此应该可以明确识别)
CGRectInfinite是一个矩形,其中一些值设置为DBL_MAX i.s.o。一个所有元素都设置为无穷大的矩形,其背后的原因是什么
以下是一些猜测:
CGRectInfinite
的值不明确)因为,正如预期的那样,
CGRectIsInfinite
将其参数与CGRectInfinite
进行比较(在某些API中具有特殊含义,因此应该可以明确识别).谢谢你的回答,我澄清了一点问题。谢谢你的回答,我澄清了一点问题。我明白你的意思,但是,为什么苹果的API选择返回一个所有成员都设置为无穷大而不是CGRectInfinite的rect呢?@Pieter所以你的问题真的很简单“为什么SpriteKit在CalculateAccumeratedFrame
中使用的无限矩形与其他苹果API(如Core Image)不一致?”我想你可以这样说,或者“为什么SpriteKit引入了一种新的无限矩形,而苹果自己的函数CGRectIsInfinite并不认为它是无限的?”“我明白你的意思,但是,为什么苹果的API选择返回一个所有成员都设置为无穷大的rect而不是CGRectInfinite?@Pieter所以你的问题是“为什么SpriteKit在CalculateAccumeratedFrame
中使用无穷大的rect与其他苹果API不一致,比如Core Image?”。我想你可以这样说,或者“为什么SpriteKit引入了一种新的无限矩形,而苹果自己的函数CGRectIsInfinite并不认为它是无限的?”