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

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

 

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值