我有一个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'; clipsToBounds = YES; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x174298240
试试这段代码
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]];
_tagArray = [_tagArray replaceObjectAtIndex:_tagArray.count-1 withObject:l];
之所以使用此选项,是因为您获取了最后一个对象并更改了该对象的颜色。之后,只需替换数组中的最后一个对象。并删除最后一行代码。