首页 > 白话Cocoa > 一个自适应tableView内容高度的例子

一个自适应tableView内容高度的例子

该demo主要实现的功能:当tableView的内容少时,tableView自适应内容,高度变小,窗口自适应tableView,同样高度变小。当tableView的内容多时,tableView自适应内容,高度变大,窗口自适应tableView,同样高度变大

df6af46e9d0ef338fe2c644f3451b40d

3579e7d1b51cee4f93d933d7a308fc95

一、tableView自适应内容高度,采用的方法是:计算tableView有多少行,乘以每一行的高度,算出tableView要完全自适应这些内容应该具备的高度,将算出来的这个高赋值给嵌入了tableView的scrollView

二、窗口自适应tableView高度,采用的方法是:

1、用auto layout对嵌入tableView的scrollView与上下控件之间的垂直间隔进行约束。

2、同时也对scrollView的高度添加约束条件,如下图所示。

59eaa9e86b8570007684b68f44929579

3、在内容变化时,算出scrollView要适应这些内容应该具备的高度,通过代码改变scrollView高的约束条件,这时候窗口就会自适应tableView高度。关键代码如下所示:

self.scrollViewHeightConstraint.constant = (kTableRowHeight + 2) * self.tableContents.count ;

注:

因为tableView是嵌入到scrollView的,所以窗口自适应tableView高度的问题转化成窗口自适应scrollView的问题。

如果采用纯代码的方法来绘制窗口与控件,会比较复杂。而用auto layout非常简单地就可以实现自适应高度的效果,在这个例子中甚至都不用修改窗口的frame就可以让窗口自适应tableView的高度。

auto layout只支持10.7及以上系统

源代码地址:

https://github.com/helloitworks/CloseBrowserToContinue

(转载本站文章请注明出处 www.helloitworks.com ,请勿用于任何商业用途)

分类: 白话Cocoa 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.