美文网首页
iOS中UILable根据文字的高度获得lable的高度

iOS中UILable根据文字的高度获得lable的高度

作者: subject_2619 | 来源:发表于2017-08-21 12:42 被阅读0次

    方法一:使用[self.label sizeToFit]方法,能够将lable的高度适应文字的高度。
    例如:

        self.label=[[UILabel alloc]initWithFrame:CGRectMake(60,100, kScreenWidth-120, 0)];
        self.label.text=@"我是一个好人,非常好的人!";
        self.label.textColor=[UIColor blackColor];
        self.label.numberOfLines=0;
        [self.label sizeToFit];
        [self.view addSubview:self.label];
    

    上一张效果图,看一下:

    屏幕快照 2017-08-21 下午12.42.08.png

    如果你想让文字居中显示,那你一定会加上这样的一条语句,

    self.label.textAlignment=NSTextAlignmentCenter;
    

    那么我们再看一下效果,如下图所示:

    ![Uploading 屏幕快照 2017-08-21 下午12.45.45_759893.png . . .]
    我们就会发现,文字并没有剧中,这是为啥呢?仔细想一想,label的高度是根据文字的高度来确定的,相当于一开始高度不确定,当然就不居中(这里的居中是左右上下都居中)。如果我们要实现label 中任意文字的居中,我们可以采用如下的方法:。
    方法二:
    使用分类重新写一个方法,代码如下:

    - (CGSize)boundingRectWithSize:(CGSize)size
    {
        NSDictionary *attribute=@{NSFontAttributeName:self.font};
        CGSize strSize=[self.text boundingRectWithSize:size options:NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading attributes:attribute context:nil].size;
        return strSize;
    }
    

    该方法能够返回文字的Size,然后就可以做以下的内容,

    self.label=[[UILabel alloc]init];
        self.label.text=@"我是一个好人,非常好的人!我是一个好人,非常好的人!我是一个好人,非常好的人!我是一个好人,非常好的人!";
        self.label.textColor=[UIColor blackColor];
        self.label.numberOfLines=0;
        CGSize strSize=[self.label boundingRectWithSize:CGSizeMake(kScreenWidth-120,0)];
        self.label.frame=CGRectMake(60, 100, strSize.width, strSize.height);
        self.label.textAlignment=NSTextAlignmentCenter;
        [self.view addSubview:self.label];
    

    效果如下:

    屏幕快照 2017-08-21 下午2.07.03.png

    相关文章

      网友评论

          本文标题:iOS中UILable根据文字的高度获得lable的高度

          本文链接:https://www.haomeiwen.com/subject/xofcdxtx.html