NSString drawinrect问题(与View setNeedsDisplay相关)

时间:2013-04-12 06:17:31

标签: ios setneedsdisplay

我的应用在视图上绘制一个字符串。我有另一个滑块控件,它以这种方式工作:当我更改滑块的值时,视图上的字符串也会更改。但每次重新绘制字符串时,它似乎与旧字符串重叠并使字符串不清楚。

我的字符串绘制方法是这样的:

- (void)drawString:(NSString *)s withFont:(UIFont *)font inRect:(CGRect)contextRect {

    CGFloat fontHeight = font.pointSize;
    CGFloat yOffset = (contextRect.size.height - fontHeight) / 2.0;

    CGRect textRect = CGRectMake(contextRect.origin.x, contextRect.origin.y + yOffset, contextRect.size.width, fontHeight);
    [s drawInRect:textRect withFont:font lineBreakMode:NSLineBreakByClipping
        alignment:NSTextAlignmentCenter];
}

然后在视图的drawRect方法中,我重写它以绘制字符串:

[self drawString:someDynamicStringChangedEachTimeTheSliderValueChanged withFont:[UIFont fontWithName:@"Helvetica" size:12.0] inRect:textRect];

然后在视图控制器中,滑块值改变了事件我把

- (void)sliderValueChangedBy:(id)sender
{
    if ([sender isKindOfClass:[UISlider class]]) {

        ..........
        [myView setNeedsDisplay];

    }
}

我发现在数值改变几次后,字符串变得模糊并重叠。我在这里错过了什么吗?

enter image description here

0 个答案:

没有答案