Я готовлю приложение для iPhone к публикации на iOS 5 GM и столкнулся с ошибкой в UIView. Когда я переопределяю метод drawRect для подкласса, Simulator показывает желаемый результат, но когда я пытаюсь протестировать на реальном устройстве, переопределение drawRect вообще не оказывает никакого влияния.
Я даже поместил оператор записи в переопределение drawRect и подтвердил, что он вызывается.
Кто-нибудь еще заметил эту проблему?
Вот код переопределения, который я использую:
- (void)drawRect:(CGRect)rect {
DebugLog( @"*** calling drawRect ***" );
CGContextRef context = UIGraphicsGetCurrentContext();
// draw the dark gray background
CGContextSetFillColor(context, [SkinManager getWhiteColor]);
CGContextFillRect(context, CGRectMake(0.0, 0.0, rect.size.width, rect.size.height));
// draw the text field background in white
CGContextSetFillColor(context, [SkinManager getDarkGray]);
CGContextFillRect(context, CGRectMake(2.0, 2.0, rect.size.width - 4, rect.size.height - 4));
}
Вот код для генерации цвета
+(const CGFloat*) getDarkGray {
UIColor *color = [UIColor colorWithRed:51/255.0 green:51/255.0 blue:51/255.0 alpha:1];
return [self getCGColor:color];
}
+(const CGFloat*) getCGColor: (UIColor*)color {
CGColorRef colorref = [color CGColor];
const CGFloat *components = CGColorGetComponents(colorref);
return components;
}
Опять же, этот код отлично работает в iOS 4.x и в Симуляторе для iOS 5. Единственное место, которое сломано - это устройство iOS 5.