设计一个label显示效果如下(其中数字是获取来的,在变动):
思路:将label拆为3个小label,先获取第一个label的长度,第二个label在平移第一个label的长度,计算第二个label的长度,第三个label平移第一个label加上第二个label的长度
实现:1、新建一个UIView取名为TimeLabelView,
2、在TimeLabelView.h文件中{
UILabel *juLi_label,*num_label,*tian_label;
}
- (void)setTimeText:(NSString*)text;
在TimeLabelView.m文件中的initWithFrame方法下面首先进行初始化:{
//第一个label的初始化
juLi_label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 136, 36)];
//136是用setTimeText方法计算出来之后才加上的,是字符串"距离北京奥运会还有"的宽度,高度规定36
juLi_label.textAlignment =UITextAlignmentLeft;
juLi_label.backgroundColor =[UIColor clearColor];
juLi_label.text=@"距离北京奥运会还有";
juLi_label.font=[UIFont systemFontOfSize:15];
length1=[self width:juLi_label.text];
NSLog(@"%f",length1);// length1打印出来是136
[self addSubview:juLi_label];
//第二个label的初始化
num_label = [[UILabel alloc] initWithFrame:CGRectMake(length1, 0,46, 36)];
//这里的46是随便写的,后面还会再重新设置
num_label.backgroundColor =[UIColor clearColor];
num_label.textColor=[UIColor redColor];
num_label.font=[UIFontsystemFontOfSize:15];
[self addSubview:num_label];
//第三个label的初始化
tian_label = [[UILabel alloc] initWithFrame:CGRectMake(length1+num_label.frame.size.width, 2,16,34)];
//这里的16也是通过setTimeText计算出来后写出来的,一开始都是随便写的
tian_label.backgroundColor =[UIColor clearColor];
tian_label.font = [UIFontsystemFontOfSize:12.0];
tian_label.text=@"天";
[self addSubview: tian_label];
}
- (void)setTimeText:(NSString*)text
{
CGSize size=[textsizeWithFont:[UIFont systemFontOfSize:15]constrainedToSize:CGSizeMake(MAXFLOAT,36)];//计算从主程序获取来的时间的长度
num_label.text=text;//text是从主程序传过来的时间
num_label.frame = CGRectMake(num_label.frame.origin.x,num_label.frame.origin.y,size.width, 36);
//重新定义num_label的尺寸
tian_label.frame = CGRectMake(length1+num_label.frame.size.width,2, 16, 34);
//重新设置tian_label的尺寸,往后移juLi_label的长度+ num_label的长度
}