2012-02-28 59 views
2

我写在tableviewcell一个MSG背景,但滚动时,该视图变得不同。看起来像是“情境”存储的一些状态。 代码绘制一个圆矩形与arrow.The箭头大小应该是固定的,但实际上它有时会发生变化,然后滚动。CoreGraphics中相同的代码绘制不同

- (void)drawRect:(CGRect)rect 
{ 
    // Drawing code 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    CGFloat width = self.frame.size.width; 
    CGFloat height = self.frame.size.height; 


    CGFloat arrowHeight = 10; 
    CGFloat arrowWidth = 5; 
    CGFloat arrowOffset = 5; 
    CGFloat radius = 5; 
    CGFloat shadowHeight = 2; 
    CGFloat shadowOffset = 4; 

    CGColorRef shadowColor = [UIColor colorWithRed:0.2f 
              green:0.2f 
               blue:0.2f 
              alpha:0.5f].CGColor; 

    CGColorRef color; 
     color = [UIColor whiteColor].CGColor; 

    CGContextSaveGState(context); 

     CGContextMoveToPoint(context, width/2, 0); 
     CGContextAddArcToPoint(context, width - arrowWidth, 0, width - arrowWidth, height - shadowOffset, radius); 
     CGContextAddLineToPoint(context, width - arrowWidth, arrowOffset); 
     CGContextAddLineToPoint(context, width, arrowOffset + arrowHeight/2); 
     CGContextAddLineToPoint(context, width - arrowWidth, arrowOffset + arrowHeight); 
     CGContextAddArcToPoint(context, width - arrowWidth, height - shadowOffset, shadowOffset, height - shadowOffset, radius); 
     CGContextAddArcToPoint(context, shadowOffset, height - shadowOffset, shadowOffset, 0, radius); 
     CGContextAddArcToPoint(context, shadowOffset, 0, width, 0, radius); 

    CGContextSetShadowWithColor(context, CGSizeMake(0, shadowHeight), 3.0, shadowColor); 
    CGContextSetFillColorWithColor(context, color); 
    CGContextFillPath(context); 

    CGContextRestoreGState(context); 
} 

这样的效果: enter image description here

+0

这是'drawRect'在UIView子类已添加到表格视图单元格?你是如何添加视图的?它有什么自动调节面膜? – jrturton 2012-02-28 08:48:10

+0

是的,我只需添加视图到表格视图单元格的内容查看。不要设置autosizeing掩码,我认为它是UIViewAutoresizingNone。 – 2012-02-28 08:54:37

回答

1

我发现这个问题。当单元格被重用时视图应该重绘,或者视图将使用最后一个单元格中的视图来显示。

,只需调用[theView setNeedsDisplay]让查看通话的drawRect一次。

相关问题