请帮忙!
我定义了一个带有三个标签的自定义UIControl,然后在主视图控制器的viewDidLoad函数上,我重复地将该UIControl的多个实例添加到滚动视图中。
我需要UIControl中的一个标签每秒更新一次新值。我有一个问题,如何清除以前绘制的自定义视图?或者用最佳绘图性能更新该标签的方法是什么?
- (void) updateMinuteLabel{
CustomIconControl *control = nil;
for (control in scrollView.subviews){
if ([view isKindOfClass:[CustomIconControl class]] && control.tag >0){
CustomIconControl *item = (CustomIconControl *) control;
item.intMinute += 1;
[item setNeedsDisplay];
}
}
}
在CustomIconControl的drawRect:函数中,我使用
[minuteString drawInRect: minuteRect withFont: [UIFont systemFontOfSize:10];
使用此代码,它会继续绘制而不会清除先前绘制的控件。
有人可以帮忙吗?如果您需要更多信息,请告诉我,当然我有CustomIconControl自定义绘图部分的代码,计时器的初始化,viewDidLoad等。
答案 0 :(得分:1)
你说你的UIControl有三个标签,你的意思是你要添加三个UILabel作为UIControl的子视图吗?如果是这样,你可以只将标签的text
'属性设置为值,它会自动重绘 - 不需要[minuteString drawInRet ...
否则,如果您在drawRect:中绘制三个“标签”,则调用setNeedsDisplay:更新intMinute后应该调用drawRect:,从而绘制更新的文本。
另外,我建议你的CustomIconControl负责在intMinute更新时调用setNeedsDisplay。
安德鲁