У меня есть довольно простой пользовательский подкласс UIView:
#import "BarView.h"
#import <QuartzCore/QuartzCore.h>
@implementation BarView
@synthesize barColor;
- (void)drawRect:(CGRect)rect
{
NSLog(@"drawRect");
// Draw a rectangle.
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, self.barColor.CGColor);
CGContextBeginPath(context);
CGContextAddRect(context, self.bounds);
CGContextFillPath(context);
}
- (void)dealloc
{
self.barColor = nil;
[super dealloc];
}
@end
Если я вызову initWithFrame: rect для этого класса с некоторым ненулевым прямоугольником, он работает нормально;но когда я вызываю initWithFrame: CGRectZero, drawRect не вызывается, даже после того, как я изменяю фрейм представления на ненулевой прямоугольник.
Я, конечно, понимаю, почему у представления с нулевым фреймом никогда не будет drawRect: call, но почему он никогда не вызывается даже после смены кадра?