iOS 5 UIView drawRect覆盖不能在设备上工作
问题描述:
我正准备我的iPhone应用程序发布iOS 5 GM,并遇到了与UIView的错误。当我重写子类的drawRect方法时,模拟器显示所需的结果,但是当我尝试在实际设备上进行测试时,drawRect覆盖根本没有任何效果。iOS 5 UIView 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设备。
答
使用[self setNeedsDisplay];
drawRect方法只在初始化调用,因此它可以通过,如果你的对象是以前inited,你需要“刷新”了。
请发布您的代码,它更可能存在一个问题比在iOS中,因为它是如此非常基本,其他人也会遇到它,以及如果真的有一个错误(我们公司有几个iOS应用程序,我们还没有看到这方面的任何问题)。 – DarkDust
另外,iOS 5仍处于NDA之下,因此您可能需要访问开发论坛。 – Phlibbo
我确实在开发论坛发布了一个问题,但到目前为止没有人有任何答案。 – Jay