关于UILable自适应数据内容问题

来公司上班两天了,作为菜鸟的我还差处于朦胧中,今天就分享一个关于UILable自适应的问题,其实网上有很多案列可以自己去搜看,但我还是想分享出来。

我是在UITableView中实现的所以下面代码基本都在TableViewCell里面:

首先我们需要定义一个类来用,在程序中定义一个名为MyString(Objective-C 类型),代码如下:

在.h文件中定义一个方法如下:

/**

 *返回值是该字符串所占的大小(width, height)

 *font : 该字符串所用的字体(字体大小不一样,显示出来的面积也不同)

 *maxSize : 为限制改字体的最大宽和高(如果显示一行,则宽高都设置为MAXFLOAT,如果显示为多行,只需将宽设置一个有限定长值,高设置为MAXFLOAT)

 */

-(CGSize)sizeWithFont:(UIFont *)font maxSize:(CGSize)maxSize;

然后在.m文件中实现这个方法如下:

//返回字符串所占用的尺寸.

-(CGSize)sizeWithFont:(UIFont *)font maxSize:(CGSize)maxSize

{

    NSDictionary *attrs =@{NSFontAttributeName : font};

    return [selfboundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOriginattributes:attrs context:nil].size;

}

这个方法创建好后就到cell里面去,引用这个类,在cell中的uilabel实现这个方法代码如下:


#import "lvyouTableViewCell.h"

#import <UIImageView+WebCache.h>

#import "NSString+MyString.h"

@interface lvyouTableViewCell()

@property (nonatomic,strong)UILabel *nameLabel;//标签1

@property (nonatomic,strong)UILabel *areanameLabel;//标签2

@property (nonatomic,strong)UIImageView *image;//图片1

@end


@implementation lvyouTableViewCell


-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{

    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {

        //图片

        _image = [[UIImageView alloc]initWithFrame:CGRectMake(5, 5, 150, 100)];

        [self.contentView addSubview:_image];

        //名字

        _nameLabel = [[UILabel alloc]init];

        _nameLabel.textColor = [UIColor grayColor];

        [self.contentView addSubview:_nameLabel];

        //地址

        _areanameLabel = [[UILabel alloc]init];

        _areanameLabel.textColor = [UIColor grayColor];

        [self.contentView addSubview:_areanameLabel];

        //介绍

    }

    return self;

}

- (void)awakeFromNib {

    

}

由于是在set方法赋值所以自适应的操作的在赋值前实现,所以在set中实现如下:

//运用set方法赋值数据

-(void)setLvyoumodel:(lvyouModel *)lvyoumodel{

    _lvyoumodel = lvyoumodel;

    //第三方图片赋值

    [self.image sd_setImageWithURL:[NSURL URLWithString:_lvyoumodel.BigPic] placeholderImage:[UIImage imageNamed:@"药品"]];

    //设置大小

    CGSize whsize = CGSizeMake(MAXFLOAT, MAXFLOAT);

    //设置计算后的大小

    CGSize size = [lvyoumodel.name sizeWithFont:[UIFont systemFontOfSize:15] maxSize:whsize];

    _nameLabel.text = lvyoumodel.name;

    _nameLabel.font = [UIFont systemFontOfSize:15];

    //lable自身大小设置

    _nameLabel.frame = CGRectMake(_image.bounds.size.width+10, 30, size.width, size.height);

    _areanameLabel.frame  = CGRectMake(CGRectGetMaxX(_nameLabel.frame)+20, 30, 50, 20);

    _areanameLabel.text = lvyoumodel.areaname;

}

@end




如下:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值