У меня есть довольно простой пользовательский подкласс 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 для этого класса с некоторым ненулевым прямоangularьником, он работает нормально; но когда я вызываю initWithFrame: CGRectZero, drawRect вызывается никогда, даже после того, как я изменяю рамку вида на ненулевой прямоangularьник.
Я, конечно, понимаю, почему представление с нулевым фреймом никогда не будет вызывать drawRect: call, но почему оно никогда не вызывается даже после изменения фрейма?