本文的主要目的是使用scrollview和tableview,實現(xiàn)下面的圖的效果,其中數(shù)據(jù)都是靜態(tài)的。Mychannel和all channel兩個tap可以自由切換。
http://stackoverflow.com/questions/19561269/autolayout-with-hidden-uiviews
這里面有一個思路需要參考:如果左邊沒有image view,則通過constant和priority來調(diào)整,似的文字往左邊頂!
結(jié)構(gòu)分析:
1. 最上面是一個scroll view,允許左右滑動,其中每個卡片都能響應(yīng)事件,所以這里每一個item都是一個button,用image作為button的背景圖
2. 下面是一個大的container UIView,包含了一個標(biāo)題欄,里面有兩個Tap;還有一個是scrollView,左右可以滑動在My Channel和All Channels之間切換,同時也可以直接點擊切換
3. 第一個Tap下面添加了一個獨立的controller,里面放入了tableview

制作scroll view實現(xiàn)左右滑動

1. 首先要聲明scroll view的內(nèi)容寬度:topScrollView!.contentSize=CGSizeMake(CGFloat(180*4),0)//因為是橫向滾動,是四張圖片,每張的寬度是180
2. 每一個item是一個button,然后給button加上的背景圖片
3. 最后將每一個button作為subview添加到這個scrollerview里面
制作兩個Tap View

因為這兩個tap可以左右切換,所以放了兩個button。
container里面放入scroll view

1. tap下面還放了一個指示左右滾動的滑條
2. 因為放了兩個tap,所以整個contentsize是兩個container view的寬度
如何將table view添加到scroll view里面
1. scroll view里面放了兩個controller,通過tap來切換
2. 如何實現(xiàn)根據(jù)文字(description的高度來自適應(yīng)cell的高度):關(guān)鍵是autolayout
3. 這里我們單獨創(chuàng)建了一個view controller,里面放了一個tableview,撐滿整個view;其中autolayout最重要的第一點就是tableview的height=top layout
4. 單獨設(shè)計了tableview cell 的prototype,左邊是一個圖片,右邊是文字+文字
5. cell里面為了實現(xiàn)內(nèi)容的自適應(yīng),根據(jù)文字的高度來調(diào)整cell的高度,其中圖片的大小是固定的(包括寬和高),這里最重要的就是image view和description lable view的距離底部的content view的約束條件都是>=0

如何實現(xiàn)cell的自適應(yīng)高度還有一點比較重要:預(yù)估高度,講rowHeigh的屬性設(shè)置為AutomaticDimension

如何添加controller到scroll view里面:
1. 初始化storybaord里面的兩個controller
2. 這里需要注意添加addChildViewController:否則點擊cell之后 數(shù)據(jù)源都是消失,答案在爆棧上扎到http://stackoverflow.com/questions/14798516/uitableview-custom-cells-disappearing-content-after-scrolling

scroller view滾動,如何讓藍條跟著滾動

1. animationbar前面講到了,是放在第一個button下面的一個UIView
2. 要讓它隨著scroll 一起滾動,其實目的就是為了改變它的frame;這里有一個比例關(guān)系,channelscrllview的一個寬度是scrollerview的寬度,以為藍條這個animation只是在my channel和all channel之間切換,也就是說移動的中心是my channel的中心到all channel的中心之間,也就是100;所以有了上面的一個比例關(guān)系
3. 為什么要偏移40,是因為這個animationview的起點是中心靠左位置