0

我正在根据从循环变量事件中获得的参数在循环中绘制反应角,如下所示:

CGRectMake(cellWidth * event.xOffset,(cellHeight / MINUTES_IN_TWO_HOURS * [event minutesSinceEvent]), cellWidth,cellHeight / MINUTES_IN_TWO_HOURS * [event durationInMinutes]);

在每个循环中,minutesSinceEventand都会durationInMinutes发生变化,因此每次都会绘制不同的反应角。

我想获得循环中的最低 y 值和循环中的最大高度。简单地说,我想拥有最重要的矩形的 y 值。以及在所有下方延伸的矩形的高度。

请让我知道,如果需要任何其他信息?

4

2 回答 2

1

一个非常简单的方法是将所有矩形累积在一个联合矩形中:

CGRect unionRect = CGRectNull;
for (...) {
    CGRect currentRect = ...;
    unionRect = CGRectUnion(unionRect, currentRect);
}
NSLog(@"min Y : %f", CGRectGetMinY(unionRect));
NSLog(@"height: %f", CGRectGetHeight(unionRect));

这基本上是计算一个足够大的矩形,以包含在循环中创建的所有矩形(但不会更大)。

于 2012-06-22T08:18:28.587 回答
0

您可以做的是CGRect在循环之前声明另一个变量并跟踪其中的值:

CGRect maxRect = CGRectZero;
maxRect.origin.y = HUGE_VALF; //this is to set a very big number of y so the first one you compare to will be always lower - you can set a different number of course...
for(......)
{
    CGRect currentRect = CGRectMake(cellWidth * event.xOffset,(cellHeight / MINUTES_IN_TWO_HOURS * [event minutesSinceEvent]), cellWidth,cellHeight / MINUTES_IN_TWO_HOURS * [event durationInMinutes]);

   if(currentRect.origin.y < maxRect.origin.y)
       maxRect.origin.y = currentRect.origin.y;

   if(currentRect.size.height > maxRect.size.height)
       maxRect.size.height = currentRect.size.height;
}

//After the loop your maxRect.origin.y will be the lowest and your maxRect.size.height will be the greatest...
于 2012-06-22T07:54:18.853 回答