Swift之动态适配UITableView的cell高度
2017-06-20 15:18
363 查看
首先在Xib中拖一个UITableView,让其充满整个视图控制器,并遵守实现UITableViewDelegate,UITableViewDataSource协议;
其次,新建一个继承于UItableViewCell的自定义表格单元格的类,在xib中拖拽一个UILabel,添加好相应的约束,让其居中显示,并将Label的numberOfLines置为0(注意:这里需要设定Lable的宽度,我设置得为320);
最后,只需要在viewDidLoad中设置UITableView的两个属性estimatedRowHeight和rowHeight即可;
附上我的效果图:
当你需要显示的内容较短的时候,还可以用另外一种方式实现:即为实现UITableView的tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat这个协议:
其次,新建一个继承于UItableViewCell的自定义表格单元格的类,在xib中拖拽一个UILabel,添加好相应的约束,让其居中显示,并将Label的numberOfLines置为0(注意:这里需要设定Lable的宽度,我设置得为320);
@IBOutlet weak var myTableView: UITableView! let identifier:String = "myTableViewCellIdentifier" let textArray:NSArray = ["关雎\n关关雎鸠,在河之洲。\n窈窕淑女,君子好逑。\n参差荇菜,左右流之。\n窈窕淑女,寤寐求之。\n求之不得,寤寐思服。\n悠哉悠哉,辗转反侧。\n参差荇菜,左右采之。\n窈窕淑女,琴瑟友之。\n参差荇菜,左右芼之。\n窈窕淑女,钟鼓乐之。","春江花月夜\n春江潮水连海平,海上明月共潮生。\n滟滟随波千万里,何处春江无月明。\n江流宛转绕芳甸,月照花林皆似霰。\n空里流霜不觉飞,汀上白沙看不见。\n江天一色无纤尘,皎皎空中孤月轮。\n江畔何人初见月?江月何年初照人 4000 ?\n人生代代无穷已,江月年年望相似。\n不知江月待何人,但见长江送流水。\n白云一片去悠悠,青枫浦上不胜愁。\n谁家今夜扁舟子?何处相思明月楼?\n可怜楼上月裴回,应照离人妆镜台。\n玉户帘中卷不去,捣衣砧上拂还来。\n此时相望不相闻,愿逐月华流照君。\n鸿雁长飞光不度,鱼龙潜跃水成文。\n昨夜闲潭梦落花,可怜春半不还家。\n江水流春去欲尽,江潭落月复西斜。\n斜月沉沉藏海雾,碣石潇湘无限路。\n不知乘月几人归,落月摇情满江树。","咏早梅\n兔园标物序,惊时最是梅。\n衔霜当路发,映雪拟寒开。\n枝横却月观,花绕凌风台。\n朝洒长门泣,夕驻临邛杯。\n应知早飘落,故逐上春来。","水调歌头\n明月几时有?把酒问青天。\n不知天上宫阙,今夕是何年。\n我欲乘风归去,又恐琼楼玉宇,高处不胜寒。\n起舞弄清影,何似在人间?\n转朱阁,低绮户,照无眠。\n不应有恨,何事长向别时圆?\n人有悲欢离合,月有阴晴圆缺,此事古难全。\n但愿人长久,千里共婵娟"] override func viewDidLoad() { super.viewDidLoad() self.title = "古诗词赏析" setupTableView() } func numberOfSections(in tableView: UITableView) -> Int { return 1 } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return textArray.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { var cell:PoemTableViewCell = tableView.dequeueReusableCell(withIdentifier: identifier, for: indexPath) as! PoemTableViewCell if cell .isEqual(nil) { cell = PoemTableViewCell.init(style: .default, reuseIdentifier: identifier) } cell.showLabel.text = textArray[indexPath.row] as? String return cell } func setupTableView() { self.myTableView.register(UINib.init(nibName: "PoemTableViewCell", bundle: nil), forCellReuseIdentifier: identifier) }
最后,只需要在viewDidLoad中设置UITableView的两个属性estimatedRowHeight和rowHeight即可;
func setupTableView() { self.myTableView.tableFooterView = UIView() self.myTableView.register(UINib.init(nibName: "PoemTableViewCell", bundle: nil), forCellReuseIdentifier: identifier) self.myTableView.estimatedRowHeight = 60 self.myTableView.rowHeight = UITableViewAutomaticDimension }
附上我的效果图:
当你需要显示的内容较短的时候,还可以用另外一种方式实现:即为实现UITableView的tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat这个协议:
let textString:NSString = "关关雎鸠,在河之洲。\n窈窕淑女,君子好逑。\n参差荇菜,左右流之。\n窈窕淑女,寤寐求之。\n求之不得,寤寐思服。\n悠哉悠哉,辗转反侧。\n参差荇菜,左右采之。\n窈窕淑女,琴瑟友之。\n参差荇菜,左右芼之。\n窈窕淑女,钟鼓乐之。" func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { let attribute = [NSShadowAttributeName:UIFont.systemFont(ofSize: 15)] return textString.boundingRect(with: CGSize.init(width: 300, height: 0), options: .usesDeviceMetrics, attributes: attribute, context: nil).size.width+10 }
效果一样:
相关文章推荐
- tableview 高度适配内容(高度随着cell行数变化而动态变化)及(监听contentsize变化)
- UITableView动态改变Cell高度
- UITableView使用AutoLayout动态计算cell高度
- UITableView的cell 动态 定义 高度
- IOS学习之UITableViewCell动态计算高度(IOS8)
- XIB创建的cell中的已经适配过的控件如何动态改变高度?
- ios uitableviewcell动态计算高度
- UITableView动态改变Cell高度
- UITableView动态改变Cell高度
- UITableView 如何不动态计算返回的cell 的高度
- 动态调整UITableViewCell高度的实现方法
- Swift iOS tableView static cell动态计算高度
- Swift之点击UITableView单元格动态改变cell高度
- UITableViewcell autolayout下动态高度
- Swift iOS tableView static cell动态计算高度
- UITableViewcell autolayout下动态高度
- 提升含有动态高度UITableViewCell的UITableView的运行效率
- UITableViewCell 动态高度的调整
- Swift - 实现点击cell动态修改高度
- Swift - TableViewCell高度动态计算