systemLayoutSizeFittingSize

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

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

的源码中看到了:

<code> let size = self.prototypeCell!.contentView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize) </code> 去搜:

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

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

<code>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)") } </code> 有空继续去尝试

搜:

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 :系统更新约束

转载于:https://my.oschina.net/KeepDoing/blog/3025948

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值