我正在使用自定义日历开发一个应用程序。它包含当天事件列表的日视图。我正在获取具有重叠时间段的事件数组。 现在如何通过适当的块调整显示事件?
我可以找到重叠事件组,但无法设置块调整。 例如: - 我有以下事件
1)从8:00到12:00事件A
2)从8:00到9:00事件B
3)从9:00到10:00事件C
4)从10:00到11:00事件D
5)从11:00到12:00事件E
应该如下图所示。 这只是一种情况,我有很多其他类型的组合。 要绘制我使用下面方法的Rect。 * - (void)drawRect:(CGRect)rect { [super drawRect:rect];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBFillColor(context, 244.0/255.0, 244.0/255.0, 244.0/255.0, 1.0);
for (int i=0; i<arrayRects.count; i++)
{
if ([[arrayRects objectAtIndex:i] isKindOfClass:[NSMutableArray class]])
{
NSMutableArray *confictArray =(NSMutableArray*)[arrayRects objectAtIndex:i];
for (int j=0; j<confictArray.count; j++)
{
NSString *strRect = [confictArray objectAtIndex:j];
CGRect newRect = CGRectFromString(strRect);
newRect.size.height -=1.5;
CGContextFillRect(context, newRect);
//Draw Line on Left
{
if(i==0) {
CGContextSetRGBStrokeColor(context, 0.0, 1.0, 0.0, 1.0); // green line
} else if(i==1) {
CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0); // red line
} else {
CGContextSetRGBStrokeColor(context, 0.0, 0.0, 1.0, 1.0); // blue line
}
CGContextBeginPath(context);
CGContextMoveToPoint(context, newRect.origin.x , newRect.origin.y + 0.5); //start point
CGContextAddLineToPoint(context, newRect.origin.x ,newRect.origin.y + newRect.size.height - 0.5); // end path
CGContextClosePath(context); // close path
CGContextSetLineWidth(context, 5.0); // this is set from now on until you explicitly change it
CGContextStrokePath(context); //
}
}
}
else {
NSString *strRect = [arrayRects objectAtIndex:i];
CGRect newRect = CGRectFromString(strRect);
newRect.size.height -=1.5;
CGContextFillRect(context, newRect);
//Draw Line on Left
{
if(i==0) {
CGContextSetRGBStrokeColor(context, 0.0, 1.0, 0.0, 1.0); // green line
} else if(i==1) {
CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0); // red line
} else {
CGContextSetRGBStrokeColor(context, 0.0, 0.0, 1.0, 1.0); // blue line
}
CGContextBeginPath(context);
CGContextMoveToPoint(context, newRect.origin.x , newRect.origin.y + 0.5); //start point
CGContextAddLineToPoint(context, newRect.origin.x ,newRect.origin.y + newRect.size.height - 0.5); // end path
CGContextClosePath(context); // close path
CGContextSetLineWidth(context, 5.0); // this is set from now on until you explicitly change it
CGContextStrokePath(context); //
}
}
}*