0

以下のように、ループ変数イベントから取得したパラメーターに基づいて、ループ内で反応角を描画しています。

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

すべてのループでminutesSinceEventanddurationInMinutesが変化するため、毎回異なるリアクタンスが描画されます。

ループ内で最小の 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 に答える