如何使用计时器更新滚动视图中的自定义视图的标签

时间:2009-12-28 13:47:44

标签: iphone xcode

请帮忙!

我定义了一个带有三个标签的自定义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等。

1 个答案:

答案 0 :(得分:1)

你说你的UIControl有三个标签,你的意思是你要添加三个UILabel作为UIControl的子视图吗?如果是这样,你可以只将标签的text'属性设置为值,它会自动重绘 - 不需要[minuteString drawInRet ...

否则,如果您在drawRect:中绘制三个“标签”,则调用setNeedsDisplay:更新intMinute后应该调用drawRect:,从而绘制更新的文本。

另外,我建议你的CustomIconControl负责在intMinute更新时调用setNeedsDisplay。

安德鲁