ios开发中获取string宽度的一个小应用

来源:互联网 发布:c语言购物系统 编辑:程序博客网 时间:2024/06/03 22:53

设计一个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的长度

 

}



原创粉丝点击