systemLayoutSizeFittingSize

Easter79
• 阅读 886

转:https://www.crifan.com/ios_layout_systemlayoutsizefittingsize/ 看:

feiin/swiftmi-app: swiftmi.com app版本 采用Swift实现

的源码中看到了:

let size = self.prototypeCell!.contentView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize) 去搜:

systemLayoutSizeFittingSize

Autolayout小结(二) – 刘坤的技术博客

动态计算UITableViewCell高度详解 – Haven’s Blog

深入理解Auto Layout 第一弹 | 张不坏的博客

动态计算UITableViewCell高度详解 – CocoaChina 苹果开发中文站 – 最热的iPhone开发社区 最热的苹果开发社区 最热的iPad开发社区

UITableVIew的高度和AutoLayout – 简书

但是自己参考:

Using auto-layout to calculate table cell height — Amy Worrall’s Blog

ios – Why is systemLayoutSizeFittingSize returning (0, 0) for UITableViewCell? – Stack Overflow

ios – uitablviewcell dynamic height is not correct from systemLayoutSizeFittingSize – Stack Overflow

ios – Calling [UIView -systemLayoutSizeFittingSize:] on a UITableViewCell always fails – Stack Overflow

使用AutoLayout动态计算UITableViewCell高度 – lcg0412的专栏 – 博客频道 – CSDN.NET

objective c – Wrong size returned by systemLayoutSizeFittingSize when using multiline label – Stack Overflow

objective c – How can a get the auto layout size of the UICollectionViewCells in iOS 8? (systemLayoutSizeFittingSize returns size with zero height in iOS 8) – Stack Overflow

A Better Way to Autosize in iOS 8

去试了试,结构都没有一个能完全精准的:

var eachNewRowHeight:CGFloat = self.tableView(self.messageTableView, heightForRowAtIndexPath: eachRowIndexPath)

//when return UITableViewAutomaticDimension -> value is -1 !!! //so need adjust height value if eachNewRowHeight < 0.0 { //eachNewRowHeight = MessageTableViewCell.calculateCellHeight(curMsg)

let calcHeight = MessageTableViewCell.calculateCellHeight(curMsg) let curCell = self.tableView(self.messageTableView, cellForRowAtIndexPath: eachRowIndexPath) curCell.setNeedsLayout() curCell.layoutIfNeeded() curCell.layoutSubviews() curCell.contentView.layoutIfNeeded()

// eachNewRowHeight = curCell.contentView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize).height

var fittingSize = UILayoutFittingCompressedSize fittingSize.width = UIScreen.mainScreen().bounds.width

eachNewRowHeight = curCell.contentView.systemLayoutSizeFittingSize(fittingSize, withHorizontalFittingPriority: 1000, verticalFittingPriority: 250).height

// eachNewRowHeight = curCell.contentView.systemLayoutSizeFittingSize(UILayoutFittingExpandedSize).height if calcHeight != eachNewRowHeight { gLog.debug("(curMsg.id) fittingSize=(fittingSize), calculateCellHeight=(calcHeight), systemLayoutSizeFittingSize.height=(eachNewRowHeight)") } 有空继续去尝试

搜:

ios 自动布局 uitableviewcell 高度计算

UITableViewCell 高度计算从混沌初始到天地交泰 – 简书

抽空去:

参考:

优化UITableViewCell高度计算的那些事 · sunnyxx的技术博客

使用:

FDTemplateLayoutCell

forkingdog/UITableView-FDTemplateLayoutCell: Template auto layout cell for automatically UITableViewCell height calculating

另外,这个:

ios – Using Auto Layout in UITableView for dynamic cell layouts & variable row heights – Stack Overflow

也值得参考

-》减少无谓的冗余的cell的高度计算

-》增加滚动流畅度

setNeedsLayout :告知页面需要更新,但是不会立刻开始更新。执行后会立刻调用layoutSubviews。 layoutIfNeeded :告知页面布局立刻更新。所以一般都会和setNeedsLayout一起使用。如果希望立刻生成新的frame需要调用此方法,利用这点一般布局动画可以在更新布局后直接使用这个方法让动画生效。 layoutSubviews :系统重写布局 setNeedsUpdateConstraints :告知需要更新约束,但是不会立刻开始 updateConstraintsIfNeeded :告知立刻更新约束 updateConstraints :系统更新约束

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
35岁是技术人的天花板吗?
35岁是技术人的天花板吗?我非常不认同“35岁现象”,人类没有那么脆弱,人类的智力不会说是35岁之后就停止发展,更不是说35岁之后就没有机会了。马云35岁还在教书,任正非35岁还在工厂上班。为什么技术人员到35岁就应该退役了呢?所以35岁根本就不是一个问题,我今年已经37岁了,我发现我才刚刚找到自己的节奏,刚刚上路。
Stella981 Stella981
3年前
Google地球出现“无法连接到登录服务器(错误代码:c00a0194)”解决方法
Google地球出现“无法连接到登录服务器(错误代码:c00a0194)”解决方法参考文章:(1)Google地球出现“无法连接到登录服务器(错误代码:c00a0194)”解决方法(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.codeprj.com%2Fblo
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k