我有一个 iPad 应用程序、XCode 4.5、iOS 6.1 和 Storyboards。我有一个 UIView,其中嵌入了两 (2) 个 UIView。第一个 UIView(称为 Calendar)在上半部分,第二个 UIView(称为 Schedule)在下半部分。我在上半部分创建了一个日历,并在下半部分绘制了一个网格以显示日程安排。
事件的顺序是向用户呈现带有日历(当前月份完全填写)和时间表(显示一个空网格)的场景。在日历上点击某一天时,该天的日程安排将显示在日程安排视图中。
该问题-drawRect
在最初显示场景时被调用,在用户能够选择要显示日程的日期之前。由于我必须从 -drawRect 内部进行绘图,因此我无法弄清楚如何在-drawRect
. 我想知道使用setNeedsDisplayInRect:是否会完成我需要做的事情?
我已经查看了 SO 和 Google 好几天了,但没有发现任何可以回答这个特定问题的东西。这不是这个问题的重复,而是一个后续项目,因为该项目已被重新定义。任何想法将不胜感激。
更新:这是我使用 setNeedsDisplayInRect 的代码:
- (void) drawSchedule {
const float rectWidth = 120.0;
// draw detail for selected day for each staff member
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
CGContextSetLineWidth(context, 1.0);
CGContextSetRGBFillColor(context, 0, 0, 1, 0.3);
UIGraphicsBeginImageContext(self.bounds.size);
// draw customer name using bounds from CGRectMake
const float nameFontSize = 12;
UIFont *hourfont=[UIFont systemFontOfSize: nameFontSize];
[[UIColor blackColor] set];
[self setNeedsDisplayInRect: CGRectMake(160.0, 150.0, 120.0, 50.0)]; // mark as needs to be redrawn
// customer for this time slot
[@"John Doe" drawAtPoint:CGPointMake(114, 40) withFont:hourfont];
}