一对一直播系统源码,UICollectionViewCell自适应文字宽度

一对一直播系统源码,UICollectionViewCell自适应文字宽度实现的相关代码

自定义cell

 

1
#pragma mark — 自定义cell<br> <br>#import "SelfSizingCollectCell.h"<br>#import "Masonry.h"<br>#define itemHeight 60<br>@implementation SelfSizingCollectCell<br>- (instancetype)initWithFrame:(CGRect)frame{<br>    self = [super initWithFrame:frame];<br>    if (self) {<br>        self.contentView.backgroundColor = [UIColor redColor];<br>        // 用约束来初始化控件:<br>        self.textLabel = [[UILabel alloc] init];<br>        self.textLabel.textAlignment =NSTextAlignmentCenter;<br>        self.textLabel.backgroundColor = [UIColor greenColor];<br>        [self.contentView addSubview:self.textLabel];<br>#pragma mark — 如果使用CGRectMake来布局,是需要在preferredLayoutAttributesFittingAttributes方法中去修改textlabel的frame的<br>       // self.textLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, 30)];<br> <br>#pragma mark — 如果使用约束来布局,则无需在preferredLayoutAttributesFittingAttributes方法中去修改cell上的子控件l的frame<br>        [self.textLabel mas_makeConstraints:^(MASConstraintMaker *make) {<br>           // make 代表约束:<br>            make.top.equalTo(self.contentView).with.offset(0);<br>            make.left.equalTo(self.contentView).with.offset(0);<br>            make.height.equalTo(@(itemHeight/2));<br>            make.right.equalTo(self.contentView).with.offset(0);<br>        }];<br>    }  <br>    return self;<br>}<br>#pragma mark — 实现自适应文字宽度的关键步骤:item的layoutAttributes<br>- (UICollectionViewLayoutAttributes *)preferredLayoutAttributesFittingAttributes:(UICollectionViewLayoutAttributes *)layoutAttributes{<br>    <br>    UICollectionViewLayoutAttributes *attributes = [super preferredLayoutAttributesFittingAttributes:layoutAttributes];<br>    CGRect rect = [self.textLabel.text boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, itemHeight) options:NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName: [UIFont systemFontOfSize:14]} context:nil];<br>    rect.size.width +=8;<br>    rect.size.height+=8;<br>    attributes.frame = rect;<br>    return attributes;<br>    <br>}<br>@end

 

Controller中关键

 

 

1
#pragma mark — 视图控制器中使用:(关键)<br>layout.estimatedItemSize = CGSizeMake(2060);  // layout约束这边必须要用estimatedItemSize才能实现自适应,使用itemSzie无效<br>以上就是一对一直播系统源码,UICollectionViewCell自适应文字宽度实现的相关代码, 更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(162)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示