iOS-UICollectionViewCell自适应文字宽度

2023-05-16

自定义cell

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

Controller中关键

#pragma mark — 视图控制器中使用:(关键)
layout.estimatedItemSize = CGSizeMake(20, 60);  // layout约束这边必须要用estimatedItemSize才能实现自适应,使用itemSzie无效

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS-UICollectionViewCell自适应文字宽度 的相关文章

  • Angular/ HTML5 到 iOS WKWebView 通信

    我们正在尝试看看发送信号的最佳选择是什么To iOS WKWebView fromAngular 6 HTML5 项目 任何示例都会很棒 我们想要做的是 我们在 Angular 网页上有一个按钮 单击该按钮应该通知 iOS 执行某些操作 我
  • iOS 上的三字母国家代码

    我知道您可以在 iOS 上获取所有国家 地区的两个字母的国家 地区代码 但是有没有办法获得三个字母的国家代码 So from http en wikipedia org wiki ISO 3166 1 alpha 2 http en wik
  • 我什么时候应该使用 CGM 设备组和主题?

    我正在考虑将 Google Cloud Messaging 合并到我的应用程序中 我想向与用户关联的所有设备发送消息 乍一看 它看起来像 GCM 的设备群组消息传递 https developers google com cloud mes
  • TypeError:cli.init 不是 React Native 的函数

    在 MacBook Air M1 芯片中运行 npx react native init appName 时 TypeError cli init is not a function at run opt homebrew lib node
  • Quickblox 聊天未进行身份验证

    我在我的应用程序中使用 Quickblox 进行一对一聊天 用户已经登录 但是当我尝试登录聊天时 出现以下错误 2014 03 31 12 42 09 532 MyChat 2175 3803 QBChat didNotAuthentica
  • 如何执行 UIAlertAction 的处理程序?

    我正在尝试编写一个帮助程序类以允许我们的应用程序支持两者UIAlertAction and UIAlertView 然而 当写alertView clickedButtonAtIndex 方法为UIAlertViewDelegate 我遇到
  • 将 NSDate 转换为 SWIFT 中具有特定时区的字符串

    在我的核心数据库中 我有一个带有 NSDate 属性的 新闻 实体 我的应用程序遍布全球 新闻已发布2015 09 04 22 15 54 0000法国时间 GMT 2 为了保存日期 我将其转换为 UTC 格式 let mydateForm
  • 设置使用 iPhone 相机拍摄的图像的类型

    如果我们使用 iPhone 相机拍摄照片 图像将默认以 JPEG 格式保存 我想以其他格式 例如 PNG 保存捕获的图像 是否可以 当我们从应用程序调用 iPhone 相机时 是否可以通过代码执行此操作 我们可以设置捕获图片后必须保存的图像
  • NSPredicate 查询不包含特定字符串

    对这个问题进行了高低查找 但找不到我的答案 我正在查询核心数据以查找不等于指定字符串的所有记录 例如 所有不等于当前会话ID的记录 我已经尝试过这些但无济于事 NSPredicate predicate NSPredicate predic
  • 如何修复C风格的for语句?

    什么是正确的修复方法C 风格的 for 语句对于下面发布的代码 目前我正在交战 C 风格的 for 语句已弃用 并将在将来删除 斯威夫特的版本 var ifaddr UnsafeMutablePointer
  • prepareForSegue 和代表

    我有一个有两个 segue 的应用程序 在其中一个 Segue 中 当前视图控制器成为委托 而另一个则不是 void prepareForSegue UIStoryboardSegue segue sender id sender if s
  • CNContact 添加新的联系人问题

    我在通过以下方式添加联系人时遇到问题联系框架 我使用的是装有 iOS 12 1 2 的 iPhone 5s 设备 我添加联系人的代码如下 let saveRequest CNSaveRequest saveRequest add self
  • 使用prefersLargeTitles 和 UITableView 平滑滚动

    我在使用时遇到了滚动问题prefersLargeTitles并添加了UITableView 如果我设置prefersLargeTitles在导航控制器中 其根是UITableViewController一切都很好 导航大标题的滚动方式与我们
  • 如何更改 UISwitch 关闭状态的默认颜色?

    我想更改 UISwitch 中 onTintColor 的颜色以表示关闭状态 切换位于表格视图中 并且以编程方式进行切换 settingsSwitch setBackgroundColor UIColor whiteColor settin
  • iOS UITableViewCell 配件在左侧?

    对于我的应用程序 我想要一些可以同时具有复选标记和详细信息披露按钮的单元格 也就是说 我希望它们看起来与 iOS 设置中的 Wi Fi 网络选择一模一样 左侧的复选标记 中间的内容 右侧的详细信息披露按钮 有没有正确的方法来做到这一点 或者
  • 找不到导航对象。您的组件是否位于导航器屏幕内?

    在我下面的代码中 当我使用 useNavigation 时 它会给出像我的问题一样的错误 如何使用useNavigation 请任何人都可以解决此错误 错误 找不到导航对象 您的组件是否位于导航器屏幕内 我从这里跟踪了代码https rnf
  • Xcode 不会在故事板中显示我的文本字段占位符文本

    当我在属性检查器中分配文本字段的占位符值时 它不会显示在故事板中 但是 当我运行应用程序的模拟器时 它就在那里 我缺少什么设置吗 我只想能够在编辑器中看到占位符文本 下面是 xcode 和模拟器之一的屏幕截图 我遇到了同样的问题 幸运的是我
  • Swift 3 '[UIApplicationLaunchOptionsKey:任意]?'无法转换为 '[String : NSString]'

    我有一个 TVOS 应用程序已从 Swift 2 转换为 Swift 3 但出现以下错误 我不确定如何让它安静下来 UIApplicationLaunchOptionsKey 任意 无法转换为 String NSString 它出现在这段代
  • 如何保存 1 个 xcode 项目中的所有构建设置并在其他 xcode 项目上使用它们?

    我使用 xcode 4 5 和 cordova phonegap 来构建我的应用程序 我投入了大量时间来获取适合我的 Xcode 项目的构建设置 并且我想在我正在构建的多个应用程序上重用这些设置 我正在寻找是否有一种快速的方法来导出这些设置
  • 删除后台 moc 中的对象然后在主 moc 中刷新它会导致 NSFetchedResultsController 更新崩溃

    我遇到了一个NSObjectInaccessibleException我无法理解 Terminating app due to uncaught exception NSObjectInaccessibleException reason

随机推荐

  • EBS触发器执行顺序

    1 xff0e 当打开FORM时 xff1a xff08 1 xff09 PRE FORM xff08 2 xff09 PRE BLOCK xff08 BLOCK级 xff09 xff08 3 xff09 WHEN NEW FORM INS
  • 数据库优化法则

    1 有可能的话 xff0c 用一个语句处理多个更新 xff1b 尽量减少对同一个表的重复访问 2 易识别的语句有助于定位性能问题 xff08 例如给SQL语句加注释 xff0c oracle已经解决为sql语句自带注释的问题 xff09 3
  • C/C++/C#是否支持基于string的switch-case??

    C C 43 43 只支持整型值 用字符常量也可以 但编译器事实上也是把字符常量量转化成了整型值的 其实 xff1a C C 43 43 支持 int 和char xff0c switch语句中的case只能是常量 是整型 字符或枚举三种
  • 虚拟机下linux连接外网

    1虚拟机点编辑 选择虚拟网络编辑器 2按照下图配置 xff0c 注意如果自己以前更改过 xff0c 最好点击还原默认设置 3点击NET设置 xff0c 记住网关IP 这里是192 168 159 2 4选择虚拟机 设置网络适配器为NAT模式
  • Sublime Text 2.02注册码

    BEGIN LICENSE Andrew Weber Single User License EA7E 855605 813A03DD 5E4AD9E6 6C0EEB94 BC99798F 942194A6 02396E98 E62C997
  • 表格复制粘贴次数过多导致卡死解决方案

    卡死原因 每粘贴一次 for循环 一次 就会呈现几何的增加 每个字段部分字母出现重复的 解决方案 我再写个 循环 他每增加 重复的字段 我就重复的给删了 span class token comment 循环列表进行计算 span span
  • Ansible使用记录(一)——介绍、安装及简单使用

    文章目录 系列开篇说明正文环境介绍安装Linux版本安装官方版本安装 基本概念介绍关于互信关于inventory 总结 系列开篇说明 此次新开的一个自动化更新系列 xff0c 主要是因为最近工作中用的比较多 xff0c 而且Ansible在
  • Ubuntu下locale文件

    March 7 2015 11 44 PM locale文件 关于locale文件的设定 locale 是国际化与本土化过程中的一个非常重要的概念 xff0c 个人认为 xff0c 对于中文用户来说 xff0c 通常会涉及到的国际化或者本土
  • 在执行批处理时出现错误。错误消息为: 引发类型为“System.OutOfMemoryException”的异常。

    1 打开的SQL脚本页签太多 xff0c 关掉没用的页签窗口 eg xff1a 下图 xff0c 开了N多个页签窗口 xff0c 把当前不需要的保存关掉 xff1b 再执行你的语句 2 可能sql取的数据量太大了 超出内存的空间
  • SQL语句--截取完整日期中的 年、月、日

    SQL语句 截取完整日期中的 年 月 日 截取日期 xff1a 几号 span class token keyword SELECT span substring span class token punctuation span span
  • SQL语句--用一个字段下的数据模糊匹配另一个字段的数据

    SQL语句 用一个字段下的数据模糊匹配另一个字段的数据 假设现在手中有 A表 Sno Sname 1 张三 章三 2 里斯 李四 里四 3 王五 王武 B表 Tname 张三 里四 王武 我们要A表的 姓名 与B表的 Tname 模糊匹配
  • SQL--查询:一个字段的一个数值对应另一个字段的多个数值

    查询 xff1a 一个字段的一个数值对应另一个字段的多个数值 举例如下 xff1a span class token comment 查 一个商品 对应 多个仓库 的记录 xff08 注 xff1a 一个商品名称 对应 同样的一个仓库 的记
  • EXCEL--单元格文字行间距如何调整解决方法

    想调整单元格内的行间距 xff1a 1 选中单元格 2 菜单栏 字体 文 选择 显示拼音字段 3 单元格间距拉宽 4 如果还想调大或调小间距 xff0c 字体 文 选择 拼音设置 字体 字号调整即可
  • C语言常见题目汇总(不断更新)(建议收藏)

    前言 xff1a C语言的常见题 xff0c 对大家学习C语言会有一定的帮助 xff0c 不断地会收录新题 xff08 含牛客网的习题 xff09 没有对题型进行分类 xff0c 大家自行挑选对自己有用的题目 如果代码有什么bug xff0
  • datetime型的字段,不想显示为‘1900-01-01‘ ;显示为空值

    当datetime型的字段 xff0c 没有值时 xff0c 会显示为 1900 01 01 目标让这个值显示为空值 字段FDate datetime型 span class token comment 先强制转换 xff0c 再截取为短日
  • Excel-图表数据标签自定义内容

    想实现的效果是自定义编辑数据标签 xff0c 比如当前选中的数据标签只有数值 xff0c 我想实现的数据标签显示为如 xff1a 16朵 当前状态是 xff0c 只有一种方法 xff0c 就是一次编辑每个数据标签的文本框 xff1a 选中一
  • VB17-Excel导出设置格式

    Range Cells 1 1 Cells 1 Icol 1 Font Name 61 黑体 39 设标题为黑体字 Range Cells 1 1 Cells 1 Icol 1 Font Bold 61 True 39 标题字体加粗 Ran
  • 宝藏下载神器,python一键下载B站视频

    B站无疑是一个宝藏地带 xff0c 作为一个宝藏 xff08 老 xff09 男孩 xff0c 请自行忽略 xff08 老 xff09 字 xff0c B站 xff0c 一个学习的天堂 xff0c 请一定珍惜 xff0c 好好使用 xff0
  • Python发邮件脚本,Python调用163邮箱SMTP服务实现邮件群发

    邮件营销 xff0c 一个昔日辉煌 xff0c 如今没落的广告营销方式 xff0c 曾经的恶意广告邮件群发 xff0c 到现在还存留着的大站协议群发 xff0c 可能还是有不少人能够做到正常群发邮件 xff0c 但大概率很多人都不会点开邮件
  • iOS-UICollectionViewCell自适应文字宽度

    自定义cell pragma mark 自定义cell import 34 SelfSizingCollectCell h 34 import 34 Masonry h 34 define itemHeight 60 64 implemen