有時要實作一個複雜的頁面布局,單單使用 UITableView 實作不了,需要通過 UITableView 和 UICollectionView 結合實作,即每個單元格 tableViewCell 中都嵌套一個 collectionView。下面通過樣例示範如何實作。
1,效果圖
(1)表格中每一個單元格對應一個月份的圖書清單。 (2)單元格中頭部顯示月份标題。内部通過 collectionView 顯示當月所有書籍封面圖檔,數量不定。整個單元格高度自适應。 (3)這個樣例其實隻用多 section 的 collectionView 也能實作( 點選檢視)。本文使用 UITableView + UICollectionView 示範如何實作同樣的功能,
2,如何實作單元格高度自适應
(1)我們要對 collectionView 設定個高度限制。當在單元格中更新 collectionView 的資料時,要擷取這個 collectionView 的真實的内容高度( contentSize.height),然後用 contentSize.height 來更新 collectionView 的高度限制。這樣就實作了單元格内部 collectionView 的高度自适應。 (2)而對于單元格 tableViewCell 的高度自适應,是通過 AutoLayout 特性實作的。利用内容将 cell 撐起來。
1 2 3 4 | |
3,實作步驟
(1)建立一個自定義的 collectionView 單元格類: MyCollectionViewCell,同時勾選“ Also create XIB file”
(2)在 MyCollectionViewCell.xib 中添加一個 ImageView,并設定好限制。同時在對應的類中作關聯
(3) MyCollectionViewCell.swift 代碼如下:
1 2 3 4 5 6 7 8 9 10 11 | |
(4)建立一個自定義的 tableView 單元格類: MyTableViewCell ,同時勾選“ Also create XIB file ”
(5)在 MyTableViewCell.xib 中添加一個 Label 和一個 CollectionView,并設定好限制。同時在對應的類中作關聯。 其中 Label 設定的是上、下、左、右4個限制:
CollectionView 設定的是左、右、下以及高度這個4個限制:
(6) MyTableViewCell.swift 代碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | |
(7)在 StoryBoard 主視圖中添加一個 TableView,并設定好限制。同時在對應的類中作關聯。
(8) ViewController.swift 代碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | |
源碼下載下傳:
hangge_1591.zip
功能修改:每個單元格隻顯示一行封面圖檔
上面的樣例中,每個單元格内的圖檔是全部顯示出來,有多少顯示多少,高度自适應。 我們還可以換種展示方法,每個單元格,即每個 collectionView 隻顯示一行資料,圖檔如果多的話可以通過左右滑動檢視。
1,效果圖
2,實作原理
我們隻需要把 collectionView 的滾動方向改成水準方向即可。
如果不需要顯示橫向的滾動條,可以去掉“ Shows Horizontal Indicator”的勾選。
原文出自: www.hangge.com 轉載請保留原文連結: http://www.hangge.com/blog/cache/detail_1591.html