水平的表格視圖 Horizontal TableView

作者:Mikeva鏈接:https://zhuanlan.zhihu.com/p/26762012來源:知乎著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

一、目的

這篇就是要教大家如何實作出水平的TableView。

就像下圖上面那一塊,可以當(dāng)作第二層的Tab Bar 使用。


iOS預(yù)定地TableView是垂直滑動的效果,也就是由上往下看的動線。

但是當(dāng)今天我們的UI需求是一個水平的呈現(xiàn),很直覺的會想到用UICollectionView去實作,

但其實用UITableView來改造,我個人覺得更加容易,多一個實作選項也未嘗不好。

二、原理

原理其實很簡單,就是靠旋轉(zhuǎn)。

如果圖片的原理看得懂的話,就可以直接跳過這邊,到下一段落看Code的實作。


其實1.2.3步驟交換是沒有問題的。

1. 旋轉(zhuǎn) 270度 or - PI/2

第一步就是旋轉(zhuǎn),270度也就是-PI/2或者3PI/2都是一樣的。然而會發(fā)現(xiàn),他的旋轉(zhuǎn)是依據(jù)中心點做旋轉(zhuǎn)。

2. 移動到要的位置

接著就是要移動。依據(jù)跟原來的Table距離來看,

我們需要往左(+x方向)半個Table的長度然後往右半個Table的寬度(-x方向)

同理,我們還需要向上半個(-y方向)半個Table的長度然後往下半個Table的寬度(+y方向)

3. 旋轉(zhuǎn)Cell

最後別忘了Cell因為被旋轉(zhuǎn)了,所以我們得把他轉(zhuǎn)回來,才能讓使用者看到正確的顯示。剛剛轉(zhuǎn)了-PI/2,現(xiàn)在我們讓他轉(zhuǎn)PI/2來矯正方向。

三、程式碼實現(xiàn)(Swift)

說這麼多,直接來上Code最清楚。

1. 旋轉(zhuǎn) 270度 or - PI/2 (UITableView)

self.transform = CGAffineTransform(rotationAngle: CGFloat(-Double.pi/2))

2. 移動到要的位置 (UITableView)

這邊要注意的是,因為我們做了旋轉(zhuǎn),所以顯示上面的長寬跟實際的長寬是顛倒的。

let xOrigin = (frame.size.width - frame.size.height) / 2.0;

let yOrigin = (frame.size.height - frame.size.width) / 2.0;

self.frame = CGRect(x: xOrigin, y: yOrigin, width: frame.size.height, height: frame.size.width);

3. 旋轉(zhuǎn)Cell (UITableViewCell)

self.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi/2)

完整程式碼連結(jié)

四、小結(jié)

有沒有覺得其實很簡單,不需要去處理UICollection的layout也是不錯的呀!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容