在Array中更改UILabel的背景颜色

时间:2017-02-01 03:34:46

标签: ios objective-c uilabel uibackgroundcolor

我有一个UILabels数组。

UILabel *tag = [[UILabel alloc]initWithFrame:CGRectMake(offx,offy, 200, 50)];
[tag setTextColor:[UIColor whiteColor]];
[tag setFont:tagText.font];
tag.numberOfLines = 0;
[tag setText:tagText.text];
[self addSubview:tag];
[_tagArray addObject:tag];

然后我想改变这个数组中其中一个标签的背景颜色。

NSLog(@"%@", [_tagArray lastObject]);
UILabel *l = (UILabel *)[_tagArray lastObject];
[l setBackgroundColor:[UIColor redColor]];
[[_tagArray lastObject] setBackgroundColor:[UIColor redColor]];

在日志中,我获取了我创建的标签,但背景颜色没有变化。

  

UILabel:0x15fec10c0; frame =(6 78; 52 29); text =' hi&#39 ;; clipsToBounds = YES; userInteractionEnabled = NO; layer =< _UILabelLayer:0x174298240

2 个答案:

答案 0 :(得分:0)

试试此代码

   NSArray *_tagArray=[[NSArray alloc] initWithObjects:@"First",@"Second",@"Third",nil];
             for (int xOff=0; xOff<[_tagArray count]; xOff++) 
            {
                UILabel *tag = [[UILabel alloc]initWithFrame:CGRectMake(xOff,xOff*50, 200, 50)];
                [tag setTextColor:[UIColor blueColor]];
                tag.numberOfLines = 0;
                [tag setText:[_tagArray objectAtIndex:xOff]];
                [tag setTag:xOff];

                [self.view addSubview:tag];
            }

            UILabel *l = (UILabel *)[self.view viewWithTag:1];
            [l setBackgroundColor:[UIColor greenColor]];

            UILabel *l2 = (UILabel *)[self.view viewWithTag:2];
            [l2 setBackgroundColor:[UIColor redColor]];

答案 1 :(得分:-1)

    _tagArray = [_tagArray replaceObjectAtIndex:_tagArray.count-1 withObject:l];

使用此方法是因为您拍摄了最后一个对象并更改了该对象的颜色。之后只需从数组中替换最后一个对象。并删除最后一行代码。