`

[IOS](转)UILabel的高度和宽度自适应

    博客分类:
  • IOS
阅读更多

转自:http://www.jianshu.com/p/4c56c449eed3

 

1 创建category

.h中
+ (CGFloat)getHeightByWidth:(CGFloat)width title:(NSString *)title font:(UIFont*)font;

+ (CGFloat)getWidthWithTitle:(NSString *)title font:(UIFont *)font;

  

.m中
+ (CGFloat)getHeightByWidth:(CGFloat)width title:(NSString *)title font:(UIFont *)font
{

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, width, 0)];
    label.text = title;
    label.font = font;
    label.numberOfLines = 0;
    [label sizeToFit];
    CGFloat height = label.frame.size.height;
    return height;
}

+ (CGFloat)getWidthWithTitle:(NSString *)title font:(UIFont *)font {
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 1000, 0)];
    label.text = title;
    label.font = font;
    [label sizeToFit];
    return label.frame.size.width;
}

 

2 使用时 引入头文件

#import "UILabel+LabelHeightAndWidth.h"

#pragma mark - labelOne  SizeToFitHeight
- (void)buildLabelOne
{
    UILabel *labelOne = [[UILabel alloc] initWithFrame:CGRectMake(10, 30, 200, 50)];
    labelOne.text = @"这是labelOne的高度自适应这是labelOne的高度自适应这是labelOne的高度自适应这是labelOne的高度自适应";
    labelOne.backgroundColor = [UIColor grayColor];
    labelOne.font = [UIFont systemFontOfSize:20];
    labelOne.numberOfLines = 0;
    CGFloat height = [UILabel getHeightByWidth:labelOne.frame.size.width title:labelOne.text font:labelOne.font];
    labelOne.frame = CGRectMake(10, 30, 200, height);
    [self.view addSubview:labelOne];

}

#pragma mark - labelTwo  SizeToFitWidth
- (void)buildLabelTwo
{
    UILabel *labelTwo = [[UILabel alloc] initWithFrame:CGRectMake(10, 300, 50, 100)];
    labelTwo.text = @"这是labelTwo的宽度自适应这是labelTwo的宽度自适应这是labelTwo的宽度自适应";
    labelTwo.backgroundColor = [UIColor cyanColor];
    labelTwo.font = [UIFont systemFontOfSize:20];
    CGFloat width = [UILabel getWidthWithTitle:labelTwo.text font:labelTwo.font];
    labelTwo.frame = CGRectMake(10, 300, width, 100);
    [self.view addSubview:labelTwo];
}

 

注意:如果需要在程序中某些位置调用API后获得数据再刷新lable的text,那么在刷新后text后再调用

CGFloat width = [UILabel getWidthWithTitle:labelTwo.text font:labelTwo.font];
labelTwo.frame = CGRectMake(10, 300, width, 100);

要不刷新的text可能长度可能大于初始化时设置的text

 

效果如下图

 
分享到:
评论

相关推荐

    UILabel 宽度和高度自适应的方法

    例如,添加一个与父视图的宽度相关联的约束,并设置合适的优先级,可以让UILabel宽度自适应。同时,设置一个垂直间距约束,让UILabel的高度根据内容自动增长。 4. **Attributed String**: - 如果需要更复杂的布局...

    ios-自适应高度UILabel.zip

    "ios-自适应高度UILabel.zip"这个压缩包文件,可能包含了关于如何在Swift中实现UILabel动态高度调整的示例代码或教程。 在这个GitHub项目"UI-Swift"中,开发者fengzhihao123分享了一种方法来解决UILabel的高度...

    UIlabel根据文本、字体获得label宽度;自适应宽高

    总之,`UILabel`的宽度可以通过`boundingRect(with:options:context:)`或`sizeThatFits(_:)`方法根据文本和字体计算得出,而高度则通常由`numberOfLines`和`sizeThatFits(_:)`来自动适应。了解并熟练运用这些方法,...

    swift-UIlabel根据文本字体获得label宽度;自适应宽高

    本教程将详细讲解如何根据文本内容和字体来计算UILabel的宽度,并实现其自适应宽高的功能。 首先,我们需要理解UILabel的工作原理。UILabel在iOS中是一个内置的视图类,它能够自动处理文本的排版,包括换行、截断...

    IOS7,Label自动换行,自适应高度

    然而,从iOS7开始,Apple引入了新的属性和方法,使得UILabel能够更方便地实现自动换行和自适应高度的功能。 首先,我们来看一下如何在iOS7及以后的版本中设置UILabel以实现自动换行。这个功能主要依赖于`...

    ios-Label自适应高度或宽度.zip

    这个"ios-Label自适应高度或宽度.zip"文件提供的解决方案,就是帮助开发者动态计算UILabel根据文本内容(text)和字体(font)应具有的最佳高度或宽度。 首先,我们要理解UILabel的工作原理。默认情况下,UILabel会...

    ios-label自适应宽度高度.zip

    "ios-label自适应宽度高度.zip"这个压缩包提供的示例代码"AutoLabel"正是针对这样的需求,即让label能够根据其内容自动调整宽度和高度,实现图文混排的效果。 一、UILabel基础知识 UILabel在iOS中的主要功能是显示...

    iOS 设置UILabel的行间距并自适应高度的方法

    为了使`UILabel`能够自适应高度,我们需要计算文本在指定宽度下的最佳尺寸。这里我们可以使用`sizeThatFits`方法来获取适合的尺寸,然后更新`UILabel`的frame: ```swift // 设置UILabel根据文字自适应高度 let ...

    UIScrollView自适应高度或宽度

    以上就是使用Objective-C实现UIScrollView自适应高度或宽度的基本步骤和关键点。Swift开发者可以通过Swift的Auto Layout API来实现相同的功能,虽然语法不同,但基本思路是一致的。在实际项目中,可能需要结合特定...

    iOS_UILabel and UITextField

    在iOS开发中,`UILabel`和`UITextField`是两个非常重要的UI组件,它们在构建用户界面时起到不可或缺的作用。这两个控件都属于UIKit框架,用于显示文本内容,但它们的功能和用途有所不同。让我们深入探讨一下它们的...

    ios-一行搞定cell自适应高度.zip

    在这个例子中,`constrainToSize:`方法让UILabel根据内容自动调整高度,同时保持宽度为Cell的contentView宽度。`systemLayoutSizeFitting:`方法则用来计算Cell的高度,以适应所有约束。 此外,如果我们要指定Cell中...

    ios-根据Masonry自动布局Cell自适应高度.zip

    在iOS开发中,创建用户界面时,我们常常需要让UITableView的Cell自适应其内容的高度,以便展示各种不同大小的数据。这个“ios-根据Masonry自动布局Cell自适应高度.zip”文件提供了一个使用Masonry库来实现这个功能的...

    ios-UILabel类别Block扩展.zip

    2、block加号减号方法创建自适应宽度和高度的label对象 3、block加号减号方法创建文字填充图片按图片颜色变化的label对象 4、block加号减号方法创建带有格式化字符串的label对象(写的比较鸡肋,没有用系统的方便...

    ios-Cell自适应高度.zip

    "ios-Cell自适应高度.zip"这个压缩包提供的内容显然是关于如何让UITableViewCell根据其内容动态调整高度的示例代码。在本篇文章中,我们将深入探讨这个主题,了解如何实现自适应高度的UITableViewCell。 首先,`...

    ios-TextView自适应.zip

    此外,压缩包中的"textView"可能是包含这个功能实现的Swift或Objective-C源代码文件,你可以通过查看和运行这个文件来更深入地理解`TextView`的自适应高度机制以及iOS开发中的布局技巧。对于初学者来说,这是一个很...

    UITabeViewCell高度自适应的问题

    自iOS 7开始,Apple引入了自动布局(Auto Layout)系统,使得UITableViewCell的高度可以自适应其内容,提供了更好的用户体验。然而,实现这个功能并不总是直截了当的,可能会遇到一些问题。以下是对"UITabeViewCell...

    ios-tableviewcell 输入内容实时刷新高度 自适应.zip

    通常需要设置四个约束:leading、trailing、top和bottom,确保文本视图在单元格内能自适应宽度和高度。 6. **优化性能**: 虽然实时刷新高度提高了用户体验,但频繁的布局计算可能会对性能造成影响。因此,可以...

    ios-自动匹配高度宽度的Label,暂时不支持多属性设置.zip

    它提供了一个自动计算并设置UILabel高度和宽度的功能,使得开发者无需手动计算,尤其适合那些想要快速实现自适应布局的场景。 首先,我们要理解UILabel的基础工作原理。UILabel默认是单行文本显示,如果设置了...

    iOS YYLabel计算富文本高度

    总之,iOS开发中,YYLabel是处理富文本和高度计算的一个强大工具,尤其在处理带有表情和其他复杂格式的文本时,它的优势更加明显。正确理解和运用YYLabel,能够帮助我们创建更加精致和动态的用户界面。

    ios-自适应高度.zip

    在iOS开发中,"自适应高度"是一个关键概念,它涉及到UI界面的动态布局和用户界面的自动调整。自适应高度使得应用能够根据设备屏幕尺寸、横竖屏状态以及字体大小变化等因素,自动调整控件的高度,从而提供良好的用户...

Global site tag (gtag.js) - Google Analytics