gpt4 book ai didi

ios - 如何在 iOS 中以编程方式更新 UILabel

转载 作者:可可西里 更新时间:2023-11-01 06:23:37 25 4
gpt4 key购买 nike

我在更新标签时遇到问题。它不会删除旧值,因此新值会覆盖旧值。如有任何帮助,我们将不胜感激。

timer = [NSTimer scheduledTimerWithTimeInterval:1
target:self
selector:@selector(updateLabels)
userInfo:nil
repeats:YES];

-(void) updateLabels{
for (GraphView *graph in arr){
// retrieve the graph values
valLabel = [[UILabel alloc] initWithFrame:CGRectMake(i * 200, 0, 90, 100)];
valLabel.textColor = [UIColor whiteColor];
valLabel.backgroundColor = [UIColor clearColor];
valLabel.text = [NSString stringWithFormat:@"Value: %f", x];
i++;
}
}

最佳答案

如果您设置标签的文本,则无需调用 setNeedsDisplay 或 clearContext 等。

在你的代码中,我不知道你的变量i和x是什么?

主要问题是您要在 View 上创建和添加新标签。当您调用 updateLabels 方法时,可能会导致内存泄漏。简单地说,你有 n 次标签重叠。

您需要在创建和添加新标签之前删除标签,或者您可以重复使用已有的标签。要重用您的标签,您需要将它们保存到一个数组中并更新文本。

如果你想创建新标签,那么你可以这样做,除非你的 View 中有其他标签

-(void) updateLabels{
// remove all labels in your view
for (UIView *labelView in self.view.subviews) {
if ([labelView isKindOfClass:[UILabel class]]) {
[labelView removeFromSuperview];
}

for (GraphView *graph in arr){
// retrieve the graph values
valLabel = [[UILabel alloc] initWithFrame:CGRectMake(i * 200, 0, 90, 100)];
valLabel.textColor = [UIColor whiteColor];
valLabel.backgroundColor = [UIColor clearColor];
valLabel.text = [NSString stringWithFormat:@"Value: %f", x];
i++;
}
}

当您像这样创建新标签时,您需要将它们作为 subview 添加到您的 View 中

[self.view addSubview: valLabel];

如果你的 View 中有其他标签,那么你可以将它们保存在一个数组中,然后只删除它们

关于ios - 如何在 iOS 中以编程方式更新 UILabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11884786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com