如何在自定义日历日视图中设置事件时间段?

时间:2015-02-23 13:11:16

标签: ios objective-c events calendar

我正在使用自定义日历开发一个应用程序。它包含当天事件列表的日视图。我正在获取具有重叠时间段的事件数组。 现在如何通过适当的块调整显示事件?

我可以找到重叠事件组,但无法设置块调整。 例如: - 我有以下事件

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

应该如下图所示。enter image description here 这只是一种情况,我有很多其他类型的组合。 要绘制我使用下面方法的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); //
        }
    }
}*

0 个答案:

没有答案