美文网首页
关于label自适应宽高

关于label自适应宽高

作者: 杨大虾 | 来源:发表于2017-04-19 10:42 被阅读82次

首先声明的是

系统label的文字在垂直方向,只支持居中


1.参考:
UILabel的高度和宽度自适应

异:

高度的要写numberOfLines(换行)
宽度不用写numberOfLines
同:
==
1.都要写
sizeToFit
2.都是通过
label的frame来拿最终的宽高

ps:

+ (UILabel *)getSizeToFitHeightOfLabelWithX:(CGFloat)x
                                        y:(CGFloat)y
                      immobilizationWidth:(CGFloat)immobilizationWidth
                                    title:(NSString *)title
{
    
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(x, y, immobilizationWidth, 0)];
    label.text = title;
    //
    label.font = [UIFont systemFontOfSize:default_font];
    label.numberOfLines = 0;
    [label sizeToFit];
    return label;
}

+ (UILabel *)getSizeToFitWidthOfLabelWithX:(CGFloat)x
                                        y:(CGFloat)y
                                    title:(NSString *)title {
    /*
     经过调试,只要有sizeTofit,Label的宽高初始值即使给得再离谱,系统也会调回来,不过想想也正常,毕竟sizeTofit嘛(也就是说能对sizeTofit造成杀伤的只有label的文字和字体大小)
     */
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(x, y, 1000, 0)];
    label.font = [UIFont systemFontOfSize:default_font];
    label.text = title;
    [label sizeToFit];
    return label;
}

2.另一种解决label自适应宽度的方法(貌似适应不了高度)

//根据文字字体大小,多少,和初始x轴,更新该label的大小和位置,并且是在label赋值之后
- (void)updateLabelTextSite:(UILabel *)label textSize:(CGFloat)textSize orignX:(CGFloat)orignX{
    //不用autoLayout调这东西太蛋疼了
    // 设置Label的字体 HelveticaNeue  Courier
    UIFont *fnt = [UIFont fontWithName:@"HelveticaNeue" size:textSize];//24.0f
    label.font = fnt;
    // 根据字体得到NSString的尺寸
    CGSize size = [label.text sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:fnt,NSFontAttributeName, nil]];
    // 名字的H
    CGFloat nameH = size.height;
    // 名字的W
    CGFloat nameW = size.width;
    
    label.frame = CGRectMake(orignX,
                             0, nameW,nameH);
}

比较麻烦不是很建议


3.label使用sizeToFit的小注意

- (void)viewDidLoad {
    [super viewDidLoad];
    _a = [[UILabel alloc] initWithFrame:CGRectMake(8, 100,100, 30)];
    
    _a.font = [UIFont systemFontOfSize:29];
    
    
    _a.backgroundColor = [UIColor yellowColor];
    
//    [self.view addSubview:_a];
    [self.testUIView addSubview:_a];
    
    _a.text = @"memedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemedamemeda";
    //前
    _a.numberOfLines = 0;
    //后
    [_a  sizeToFit];

}

正常来讲是以下的效果:

numberOfLines一定要写在sizeToFit的前面

否则
label的文字过多就直接不显示了(看到一下子懵了,好神奇的说,sizeToFit不了,直接放大招,不显示了?)

label看起来没有显示

不过再去看看图层还是是可以看的到的

ps:即使numberOfLines写在了后面,如果label的text文字没那么多,那么变态,虽然没有适配,但是还是可以显示的


上面分析的有点乱,记住这一句就行:numberOfLines一定要写在sizeToFit的前面

相关文章

  • iOS知识小杂记

    1、根据label的宽高,自适应文字的大小,让文字整个填充label label.numberOfLines = ...

  • 关于label自适应宽高

    首先声明的是 系统label的文字在垂直方向,只支持居中 1.参考:UILabel的高度和宽度自适应 异: 高度的...

  • iOS文字的自适应

    给定label的宽高,根据文字的长短来自适应文字的大小,让所有的文字在这个宽高的范围内可完全显示: 对lable进...

  • iOS UILabel自适应内容宽高

    项目中在写控件时会时不时遇到需要label自适应内容宽高的情况,例如评论,商品简介,备注,试题题目,答案解析等等。...

  • iOS Masonry布局(二) - UILabel

    UILabel自适应宽高 UILabel使用Masonry布局时如果不添加宽高约束,视图会根据内容自适应宽高。 示...

  • 图片自适应

    1.平均分为3份,图片宽 根据 屏幕宽 自适应,图片宽高 根据 图片宽 的大小自适应,始终不会扭曲 图片...

  • iOS label代码自适应高度宽度

    iOS label代码自适应高度宽度 iOS label代码自适应高度宽度

  • 使用xib两个label自适应

    情景:两个label要求文字自适应,但是其中一个自适应的优先级别高,压缩另外一个 做法:1、设置两个label之间...

  • iOS 之label简单设置

    1 label的宽度自适应 2 label的高度自适应 3 简单富文本(高亮)

  • 使用UILabel显示富文本的时候图片宽高自适应方法

    在使用UILabel显示富文本的时候(包含图片),有图片的情况下图片宽高不能自适应,图片宽高自适应方法如下: de...

网友评论

      本文标题:关于label自适应宽高

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