我有一个UIView,它的子类在接口构建器中设置为我创建的UIView子类。我想更新包含它们的UIView类中的标签。我似乎无法更新drawRect中绘制的任何标签的文本。我需要在UIView子类中更改绘制元素的选项是什么?
// Using UILabel subclass (FontLabel)
- (void)drawRect:(CGRect)rect {
scoreLabel = [[FontLabel alloc] initWithFrame:CGRectMake(0,0, 400, 50) fontName:@"Intellect" pointSize:80.0f];
scoreLabel.textColor = [[UIColor alloc] initWithRed:0.8157 green:0.8000 blue:0.0706 alpha:1.0f];
[scoreLabel sizeToFit];
[scoreLabel setText:@"Initial text"];
[self addSubview:scoreLabel];
[self setNeedsDisplay];
//Also tried [self setNeedsLayout];
}
- (void)updateScoreLabel:(int)val
{
[scoreLabel setText:[NSString stringWithFormat:@"%d", val]];
}
// Using CATextLayer
- (void)drawRect:(CGRect)rect {
scoreLabel = [CATextLayer layer];
[scoreLabel setForegroundColor:[UIColor whiteColor].CGColor];
[scoreLabel setFrame:CGRectMake(0,0, 200, 20)];
[scoreLabel setAlignmentMode:kCAAlignmentCenter];
[[self layer] addSublayer:scoreLabel];
[scoreLabel setString:@"Initial text"];
[self setNeedsDisplay];
//Also tried [self setNeedsLayout];
}
- (void)updateScoreLabel:(int)val
{
[scoreLabel setString:[NSString stringWithFormat:@"%d", val]];
}
答案 0 :(得分:0)
要以编程方式更改标签文本,您需要执行以下操作:
在你的.h文件中:
在@interface部分
UILabel
s
在@property声明中添加IBOutlet
在您的.m文件中:
之后,您可以将其称为任何其他self.
变量,并设置其text
属性以更改它们在显示中的显示方式。
一般来说,尝试子类UIView
可能有点棘手(正如您所发现的那样),但希望上述内容对您至少有所帮助。