首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何动态设置UIlabel TextColor

如何动态设置UIlabel TextColor
EN

Stack Overflow用户
提问于 2013-07-23 12:47:36
回答 3查看 4.7K关注 0票数 3

我使用这段代码创建了多个标签,

.H文件

代码语言:javascript
复制
@interface ViewController : UIViewController
{
    NSArray * phraseAry ;
    UIView * containerView;
    UILabel * oldLabel;
    NSMutableArray *dataArray;
}
@property (strong, nonatomic) IBOutlet UIScrollView *myScrollView;

.M文件

代码语言:javascript
复制
- (void)viewDidLoad
{
    [super viewDidLoad];

    heightValue = 20;
    widthValue = 0;
    xValue = 5;
    yValue = 10;

containerView = [[UIView alloc] init];
    for (int i=0; i<phraseAry.count; i++) {
        widthValue = [self returnWidth:[phraseAry objectAtIndex:i]];

        int newXValue = xValue+widthValue+5;

        //NSLog(@"newXValue : %i",newXValue);
        if (newXValue > 310) {
            yValue +=20;
            xValue = 5;
            newXValue = xValue+widthValue+5;
            UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(xValue, yValue, widthValue, heightValue)];
            lbl.text = [phraseAry objectAtIndex:i];
            [lbl setFont:[UIFont fontWithName:@"Helvetica" size:14.0]];
            lbl.tag = i;
            lbl.textColor = [UIColor colorWithRed:(92/255.0) green:(109/255.0) blue:(43/255.0) alpha:1];
            [containerView addSubview:lbl];
            xValue = newXValue;
        } else {
            UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(xValue, yValue, widthValue, heightValue)];
            lbl.text = [phraseAry objectAtIndex:i];
            [lbl setFont:[UIFont fontWithName:@"Helvetica" size:14.0]];
            lbl.tag = i;
            lbl.textColor = [UIColor colorWithRed:(92/255.0) green:(109/255.0) blue:(43/255.0) alpha:1];
            [containerView addSubview:lbl];
            xValue = newXValue;
        }
    }

    containerView.frame = CGRectMake(0, 0, 320, yValue);
    //add code to customize, e.g. polygonView.backgroundColor = [UIColor blackColor];
    [self.myScrollView addSubview:containerView];
    self.myScrollView.contentSize = containerView.frame.size;
}

并使用以下代码设置特定表中的背景色和文本颜色。

代码语言:javascript
复制
- (void)updateLabelMethod
 {
            oldLabel.backgroundColor = [UIColor clearColor];
            UILabel *label = (UILabel *)[containerView viewWithTag:2];
            oldLabel = label;
            label.backgroundColor = [UIColor colorWithRed:(98/255.0) green:(147/255.0) blue:(216/255.0) alpha:1];
            label.textColor = [UIColor whiteColor];
            containerView.backgroundColor = [UIColor clearColor];
}

它将很好地更新标签的背景,但是当我使用这段代码更新文本颜色时,它将显示如下错误

由于“NSInvalidArgumentException”异常终止应用程序,原因:'-UIView setTextColor::未识别的选择器发送到实例0xbaa3b30‘

有设置文本颜色的方法吗?请帮帮忙。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-23 12:52:40

containerView视图,:2;

check容器视图只有一个视图,它是带有标签2的标签。可能是其他视图与标签2一起设置的,并且可能导致了问题。

代码语言:javascript
复制
NSLog(@"%@",label);

可以给出这里的标签给出的输出,.It应该指出UILabel本身

使用isKindOfClass:来识别它是您正在更新的标签

票数 1
EN

Stack Overflow用户

发布于 2013-07-23 12:59:55

从1而不是0开始标签标记,因为默认情况下,所有视图的标记值为0。

代码语言:javascript
复制
lbl.tag = i+1; 

因为

代码语言:javascript
复制
UILabel *label = (UILabel *)[containerView viewWithTag:0];  

它将返回containerView本身,而UIView不具有textColor属性:P

票数 3
EN

Stack Overflow用户

发布于 2013-07-23 13:04:51

代码语言:javascript
复制
    for (UILable *lblTemp in containerView.subviews){
     if ([lblTemp isKindOfClass:[UILable class]] && lblTemp.tag==2){
         // change the lbl color
        break;
     }
  }

(使用此代码进行检查;)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17810600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档