swift 版本 UItableViewCell的动态高度补足
用swift的朋友们很多都是从ios8开发了,
其中针对table cell高度自动计算的 UITableViewAutomaticDimension 异常好用,但好像只对uilabel对象有效
当cell中内容比较复杂,比如涉及图文混排或加上其他动态高度的元素,自动高度就失效了
而swift的自动高度资料很少,就整了一个出来
首先是这个extension可以计算出string内容的高度
extension String{
//MARK:获得string内容高度
func stringHeightWith(fontSize:CGFloat,width:CGFloat)->CGFloat{
let font =UIFont.systemFontOfSize(fontSize)
let size =CGSizeMake(width,CGFloat.max)
let paragraphStyle =NSMutableParagraphStyle()
paragraphStyle.lineBreakMode= .ByWordWrapping;
let attributes = [NSFontAttributeName:font, NSParagraphStyleAttributeName:paragraphStyle.copy()]
let text =selfasNSString
let rect = text.boundingRectWithSize(size, options:.UsesLineFragmentOrigin, attributes: attributes, context:nil)
return rect.size.height
}//funcstringHeightWith
}//extension end
然后可以用这个方法计算cell内各个元素的高度
//MARK: 计算cell的高度
func cellHeightByData(data:NSDictionary)->CGFloat{
var content=data.stringAttributeForKey("content")
var height=content.stringHeightWith(17,width:300)
var imgSrc=data.stringAttributeForKey("image") as NSString
ifimgSrc.length==0
{
return59.0+height+40.0
}
return59.0+height+5.0+112.0+40.0
}
最后在uitable的heightForRowAtIndexPath方法中调用
func tableView(tableView:UITableView, heightForRowAtIndexPath indexPath:NSIndexPath) ->CGFloat{
let data :JobLogsDataModel=tableData[indexPath.row] as JobLogsDataModel
return cellHeightByString(data)
//return UITableViewAutomaticDimension
}
swift 版本 UItableViewCell的动态高度补足的更多相关文章
- AutoLayout深入浅出五[UITableView动态高度]
本文转载至 http://grayluo.github.io//WeiFocusIo/autolayout/2015/02/01/autolayout5/ 我们经常会遇到UITableViewCell ...
- AutoLayout处理UITableView动态高度
我们经常会遇到UITableViewCell的高度要跟随内容而调整,在未引入AutoLayout之前,我们使用以下方法计算Label高度,然后heightForRowAtIndexPath中返回计算的 ...
- 使用Autolayout xib实现动态高度的TableViewCell
http://my.oschina.net/u/2360693/blog/481236?p={{totalPage}} 创建Xib文件 首先将Cell做好布局,调整到满意的位置和宽度,然后开始做Aut ...
- iOS开发——使用Autolayout生成动态高度的TableViewCell单元格
步骤一.TableViewCell中使用Autolayout 要点:Cell的高度必须在Constraints中指明,但不能定死,需要让内部由内容决定高度的View决定动态高度. 如UILabel设置 ...
- 升级xcode8之后出现报错提示,提示swift版本问题
最近Xcode升级了,出现了各种蛋疼的错误提示,今天遇到个导入框架出现了提示Swift版本的问题,具体如下: "Use Legacy Swift Language Version" ...
- 窥探Swift系列博客说明及其Swift版本间更新
Swift到目前为止仍在更新,每次更新都会推陈出新,一些Swift旧版本中的东西在新Swift中并不适用,而且新版本的Swift会添加新的功能.到目前为止,Swift为2.1版本.去年翻译的Swift ...
- soui中,列表控件动态高度的使用注意
1.listview的模板template中,需要增加defHeight属性,即默认高度,同时,不能出现itemHeight属性,否则动态高度会失效 2.数据适配器中,重写getViewDesired ...
- CocoaPods 更新慢&swift版本适配
一.更新慢的问题 使用CocoaPods来添加第三方类库,无论是执行pod install还是pod update都卡在了Analyzing dependencies不动 原因在于当执行以上两个命令的 ...
- css中height 100vh的应用场景,动态高度百分比布局,浏览器视区大小单位
css中height 100vh的应用场景,动态高度百分比布局,浏览器视区大小单位 height:100vh 一些只能vw, vh才能完成的应用场景: 1. 场景之:元素的尺寸限制 vw vh 主要是 ...
随机推荐
- Entity Framework关联实体的三种加载方法
推荐文章 EF性能之关联加载 总结很好 一:介绍三种加载方式 Entity Framework作为一个优秀的ORM框架,它使得操作数据库就像操作内存中的数据一样,但是这种抽象是有性能代价的,故鱼和熊掌 ...
- OneAlert 入门(二)——事件分析
OneAlert 是国内首个 SaaS 模式的云告警平台,集成国内外主流监控/支撑系统,实现一个平台上集中处理所有 IT 事件,提升 IT 可靠性.有了 OneAlert,你可以更快更合理地为事件划分 ...
- draw9patch超详细教程
这篇文章是android开发人员的必备知识,内容摘选自网络,友我为大家整理和总结,不求完美,但是有用. 视频教程地址:http://player.youku.com/player.php/sid/XM ...
- WPF WebBroswer可以用到的接口
http://pinvoke.net/default.aspx/Interfaces.DWebBrowserEvents2 [ComImport, SuppressUnmanagedCodeSecur ...
- 新浪微博授权时出现"关注 *** 的微博"
基本设置完成后, 保证scope是 "all" 或 至少 包含 "follow_app_official_microblog". 测试时, 保证你的测试账号没有 ...
- Eclipse超级完美汉化教程
转自:http://jingyan.baidu.com/article/e75057f28401a8ebc91a899e.html 是中国人都喜欢汉化的东西,除非你想挑战英文,抑或你就是英语高手.百度 ...
- HDU-1253 胜利大逃亡 (BFS)
此题可以做为三维深搜模板题.. 胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Ot ...
- WCF性能优势体现 【转】
WCF性能优势决定了其受欢迎程度,这些优势主要都体现在:统一性:互操作性:安全与可信赖:兼容性等方面. WCF是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架. ...
- SignalR--Http/WebSockets消息推送
官网API: http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-server 参考: http://www. ...
- BI-SqlServer
一.概述 SqlServer数据仓库 ETL组件 IntegrationService OLAP组件 AnalysisService 报表 ReportingService MDX(查多维数据集用的) ...