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閱讀 229,237評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,957評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,248評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,356評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,081評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,485評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,534評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,720評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,263評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,025評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,204評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,787評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,461評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,874評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,105評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,945評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,205評論 2 375

推薦閱讀更多精彩內容