2.3 在表格中嵌套另一个表格并使Cell的高度自适应 [iOS开发中的神兵利器]

1. 本节课将为您演示,如何在表格中嵌入另一个表格,从而创建更加强大的布局效果。首先在项目文件夹上点击鼠标右键,弹出右键菜单。

2. 在弹出的右键菜单中,选择创建新文件选项。我们将创建一个自定义的单元格,在此单元格中添加另一个表格,作为单元格的子元素。

3. 在弹出的文件模板选择窗口中,保持默认的选项,然后点击下一步按钮,进入下一步设置页面。

4. 在类名输入框内,输入类的名称。

5. 点击下一步按钮,进入下一步设置页面。

6. 保持默认的文件存储位置 ,点击创建按钮,完成文件的创建。

7. 现在开始编写代码,创建一个自定义的单元格的类。

8. 首先引入需要遵循的表格视图的相关协议。

9. 接着添加两个属性,一个是表格对象,另一个作为表格的数据来源。

10. 然后重写单元格的初始化方法,在该方法中对单元格进行自定义操作。

11. 首先实现父类的初始化方法。

12. 接着初始化一个表格对象,并设置表格对象的显示区域。

13. 设置表格对象的数据源和代理,为当前的视图控制器对象。

14. 接着设置不允许内部表格的滚动,只允许单元格所属表格可以进行滚动。

15. 将表格视图添加到根视图中。

16. 添加一个代理方法,用来设置表格的行数,在此设置表格的行数,与数组的长度保持一致。

17. 添加一个代理方法,用来初始化或复用表格中的单元格。

18. 创建一个字符串常量,作为单元格的复用标识,然后根据复用标识,从表格中获取可以复用的单元格。

19. 如果没有可以复用的单元格,则初始化一个默认样式的单元格,并设置单元格的复用标识。

20. 从数组中获得指定序号的字符串,作为单元格的标题文字。

21. 接着设置标题文字的字体大小为12。

22. 设置文字的颜色为灰色。

23. 然后设置标签可显示多行文字。

24. 接着创建一个类方法,用来根据字符串的长度,计算单元格的高度。

25. 创建一个字体常量,和单元格文字的字体大小相同。

26. 然后通过计算,获得文字的显示区域。

27. 通过将显示区域的高度,减去文字至基线的距离,获得文字的高度。将显示区域的宽度,除以每行文字的宽度200,获得文字的行数。两者相乘得到总的高度。

28. 添加一个代理方法,用来设置单元格的高度。

29. 首先根据单元格的序号,获得该单元格将要显示的字符串。

30. 接着根据刚刚创建的类方法,计算单元格容纳该字符串所需的高度。

31. 然后进行临界判断,从而将高度数值保持在一个合理的范围之内。

32. 添加一个方法,用来设置表格的数据源。该方法将在外部的表格中被调用。

33. 设置自定义单元格的数组属性,作为该单元格的表格的数据源。

34. 接着计算单元格内部的表格的高度,首先初始化一个浮点常量。

35. 然后创建一个循环,遍历表格的数据源。通过对每个单元格的高度进行累计,合计整个表格的高度。

36. 接着重新绘制表格的显示区域,并刷新表格中的数据。

37. 继续添加一个方法,用来获得单元格内部表格的高度数值。

38. 最后添加一个必须实现的初始化方法。然后在左侧的项目导航区,打开视图控制器的代码文件。

39. 现在开始创建处于外部的表格视图,并在表格中使用刚刚自定义的包含表格的单元格。

40. 首先使当前的视图控制器类,遵循表格视图的数据源协议和代理协议。

41. 接着创建一个数组,作为新闻的标题。

42. 创建另一个二维数组,作为新闻的评论内容。

43. 获得设备的屏幕尺寸。

44. 然后创建一个矩形区域,作为表格视图的显示区域。

45. 接着初始化一个指定显示区域的表格对象。

46. 设置表格对象的数据源和代理,为当前的视图控制器对象。

47. 设置单元格的分隔线为空白。

48. 最后将表格视图添加到根视图中。

49. 添加一个代理方法,用来设置表格的行数,在此设置表格的行数为新闻标题数组长度的两倍。偶数行用来显示标题,奇数行用来显示评论。

50. 添加一个代理方法,用来初始化或复用表格中的单元格。

51. 创建两个字符串常量,作为单元格的复用标识。第一个用于显示新闻标题的偶数行单元格,另一个用于显示新闻评论的奇数行的自定义单元格。

52. 接着创建两个单元格对象,一个是系统默认样式的单元格,另一个是包含子表格的自定义单元格。

53. 判断如果是偶数行,则执行之后的代码。

54. 根据偶数行的复用标识,从表格中获取可以复用的单元格。

55. 如果没有可以复用的单元格,则初始化一个默认样式的单元格,并设置单元格的复用标识。

56. 设置单元格的标题文字为新闻的标题。

57. 设置标题文字的字体大小为14。

58. 接着设置标题文字的颜色为白色。

59. 同时设置单元格的背景颜色为橙色。

60. 返回设置好的偶数行的单元格。

61. 接着处理奇数行的单元格,首先根据奇数行的复用标识,从表格中获取可以复用的单元格。

62. 如果没有可以复用的单元格,则初始化一个包含子表格的自定义单元格,并设置单元格的复用标识。

63. 从数组中获得该单元格将要显示的文字内容。

64. 然后调用自定义单元格对象的,设置子表格的数据源的方法,在设置子表格数据源的同时,也使子表格的高度做到自适应。

65. 最后返回奇数行的单元格。

66. 添加一个代理方法,用来设置单元格的高度。

67. 判断如果是偶数行的单元格,则设置高度为40。

68. 接着处理奇数行单元格的情况。

69. 获得该单元格中的所有文字。

70. 然后初始化一个浮点数的变量,用来合计单元格的高度。

71. 此处使用相同的方式,通过累加的方式计算子表格的高度。

72. 最后返回该高度的数值与20的和,避免单元格中的文字过于拥挤。接着点击左上角的[编译并运行]按钮,启动模拟器预览项目。

73. 在弹出的模拟器中,观察表中表的排版效果。最后点击此处的[停止]按钮,关闭模拟器,并结束本节课程。

本文整理自:《app开发中的神兵利器》,真正的[手把手]教学模式,用最快的速度上手iOS开发,苹果商店App Store免费下载:https://itunes.apple.com/cn/app/id1209739676,或扫描本页底部的二维码。课程配套素材下载地址:资料下载

apps8 2.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355

推荐阅读更多精彩内容