Обновление текста в компоненте, нарисованном в drawRect в подклассе UIView - PullRequest
0 голосов
/ 11 января 2011

У меня есть 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]];
}   

1 Ответ

0 голосов
/ 11 января 2011

Чтобы программно изменить текст меток, необходимо сделать следующее:

В вашем .h файле:

  • Определите их как UILabel s в разделе @interface

  • Добавьте IBOutlet s к ним в ваших объявлениях @property

В вашем файле .m:

  • Вставьте строки @synthesize для них в свой файл .m.

После этого вы можете ссылаться на них как на любую другую переменную self. и установить их свойство text, чтобы изменить способ их отображения на вашем дисплее.

В общем, попытка создать подкласс UIView может быть немного хитрой (как вы находите), но, надеюсь, вышесказанное поможет вам хотя бы немного.

...