代码之家  ›  专栏  ›  技术社区  ›  Bhavesh Lathigara

我想用不同的标签文本颜色放置Marquee标签

  •  2
  • Bhavesh Lathigara  · 技术社区  · 11 年前

    我想把字幕标签放在UITableView单元格中,但像标签文本一样进行了成本计算,颜色不同

    我正在使用MarqueLabel类,并且我能够在UITableViewCell上显示Marquee标签,这是完美的工作。

    我也尝试过NSAttributedString,但MarqueLabel不支持不同颜色的标签文本

    如果有人有答案,请给我

    谢谢

    这是我的代码

    [cell.contentView addSubview:[self createMarqueeLabelWithIndex:indexPath.row]];
    
    [cell.textLabel setTextColor:[UIColor redColor] range:NSMakeRange(4, 3)];
    
    -(MarqueeLabel *)createMarqueeLabelWithIndex:(int)index
    {
    
        MarqueeLabel *continuousLabel2 = [[MarqueeLabel alloc] initWithFrame:CGRectMake(10,0,300,30) rate:50.0f andFadeLength:10.0f];
        continuousLabel2.marqueeType = MLContinuous;
        continuousLabel2.continuousMarqueeSeparator = @"";
        continuousLabel2.animationCurve = UIViewAnimationOptionCurveLinear;
        continuousLabel2.numberOfLines = 1;
        continuousLabel2.opaque = NO;
        continuousLabel2.enabled = YES;
        continuousLabel2.shadowOffset = CGSizeMake(0.0, -1.0);
        continuousLabel2.textAlignment = UITextAlignmentLeft;
        continuousLabel2.backgroundColor = [UIColor clearColor];
        continuousLabel2.font = [UIFont fontWithName:@"Helvetica-Bold" size:17.000];
    
        NSString *strText = [[arrTicker objectAtIndex:index] objectForKey:@"text"];
        NSString *strTime = [[arrTicker objectAtIndex:index] objectForKey:@"time"];
        NSString *strUser = [[arrTicker objectAtIndex:index] objectForKey:@"userid"];
    
        NSString *strTemp = [NSString stringWithFormat:@"%@ %@ %@    ",strText,strTime,strUser];
    
        continuousLabel2.text = [NSString stringWithFormat:@"%@",strTemp];
    
        return continuousLabel2;
    }
    
    2 回复  |  直到 11 年前
        1
  •  3
  •   Rushik Thumar    11 年前

    在你的单元格forrowatindexpath中创建uilabel并将你的字幕标签指定给uilabel的文本集,然后将uilabel转换为字幕标签,然后将子视图添加到你的单元格中。

    希望这对你有帮助。 谢谢

        2
  •  1
  •   twil    11 年前

    不是最好的答案,而是一个肮脏的黑客。

    经过快速调查,我刚刚补充 [self setTextColor:[super textColor]]; forwardPropertiesToSubLabel

    - (void)forwardPropertiesToSubLabel {
        // Since we're a UILabel, we actually do implement all of UILabel's properties.
        // We don't care about these values, we just want to forward them on to our sublabel.
        NSArray *properties = @[@"baselineAdjustment", @"enabled", @"font", @"highlighted", @"highlightedTextColor", @"minimumFontSize", @"shadowColor", @"shadowOffset", @"textAlignment", @"textColor", @"userInteractionEnabled", @"text", @"adjustsFontSizeToFitWidth", @"lineBreakMode", @"numberOfLines", @"backgroundColor"];
        for (NSString *property in properties) {
            id val = [super valueForKey:property];
            [self.subLabel setValue:val forKey:property];
        }
        [self setText:[super text]];
        [self setFont:[super font]];
        [self setTextColor:[super textColor]];
    }
    

    现在我可以通过故事板编辑器更改标签颜色

    Editing MarqueeLabel in Storyboard

    注: 正如你所看到的,我使用纯文本。对于属性文本破解不起作用。