iOS Label自适应高度/宽度 , 图片自适应

本文介绍了如何在iOS项目中实现Label文字内容的自适应高度,并提供了将此功能封装到一个名为SizeForLabel的类中的方法。通过引入这个类,可以方便地在其他类中调用该自适应高度的代码,确保Label大小根据文字数量自动调整。此外,还讲解了图片的自适应技巧,通过设定固定宽度并按比例调整高度,确保图片不会因尺寸变化而失真。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目里许多地方都需要自适应Label上文字的高度,所以可以吧自适应高度的代码单独封装起来,写在一个类里,这样在其他的类里想调用这个方法,就可以直接使用,不用每个类都写一遍这个方法.

我把这个类起个名字叫SizeForLabel

//SizeForLabel.h
@interface SizeForLabel : NSObject
+(CGSize)labelRectWithSize:(CGSize)size
                 LabelText:(NSString *)labelText
                      Font:(UIFont *)font;
@end
//SizeForLabel.m
//参数1:Label的大小
//参数2:Label上文字内容
//参数3:文字的字体大小
+(CGSize)labelRectWithSize:(CGSize)size
                 LabelText:(NSString *)labelText
                      Font:(UIFont *)font{

    NSDictionary  *dic = [NSDictionary dictionaryWithObjectsAndKeys:font, NSFontAttributeName, nil];
    CGSize actualsize = [labelText boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil].size;

    return actualsize;
}

当我在别的类里需要对Label自适应的时候,引入SizeForLabel的头文件,直接使用这个方法


self.label = [[UILabel alloc] init];
//Label字体大小(注意:要与自适应方法里的大小一致)
self.label.font = [UIFont systemFontOfSize:20.0f];
[self addSubview:self.label];
//计算大小(我这里算的是固定宽度,计算高度;也可以固定宽度,计算高度)
CGSize digestHeight = [SizeForLabel labelRectWithSize:CGSizeMake([[UIScreen mainScreen]bounds].size.width - 20, MAXFLOAT) LabelText:@"Label上文字内容" Font:[UIFont systemFontOfSize:20.0f]];
//给Label设置大小
self.label.frame = CGRectMake(10, 10, [[UIScreen mainScreen]bounds].size.width - 20, digestHeight);
//文字换行
self.label.numberOfLines = 0;

这样Label的大小就根据文字的多少自适应了.

另外再说一下图片自适应大小
很简单
给图片一个固定的宽度,让这个图片根据比例,适应高度,这样图片不会变形

//我先把图片设置成屏幕宽,屏幕高
UIImageView *img = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen]bounds].size.width, [[UIScreen mainScreen]bounds].size.height)];
[self addSubview:img];
//图片会根据宽度自适应高度
img.contentMode = UIViewContentModeScaleAspectFit; 
//图片会根据高度自适应宽度
//img.contentMode = UIViewContentModeScaleAspectFill; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值