本文的主要目的是使用scrollview和tableview,實(shí)現(xiàn)下面的圖的效果劣针,其中數(shù)據(jù)都是靜態(tài)的校镐。Mychannel和all channel兩個(gè)tap可以自由切換。
http://stackoverflow.com/questions/19561269/autolayout-with-hidden-uiviews
這里面有一個(gè)思路需要參考:如果左邊沒有image view捺典,則通過constant和priority來調(diào)整鸟廓,似的文字往左邊頂!
結(jié)構(gòu)分析:
1. 最上面是一個(gè)scroll view襟己,允許左右滑動(dòng)肝箱,其中每個(gè)卡片都能響應(yīng)事件,所以這里每一個(gè)item都是一個(gè)button稀蟋,用image作為button的背景圖
2. 下面是一個(gè)大的container UIView,包含了一個(gè)標(biāo)題欄呐赡,里面有兩個(gè)Tap退客;還有一個(gè)是scrollView,左右可以滑動(dòng)在My Channel和All Channels之間切換链嘀,同時(shí)也可以直接點(diǎn)擊切換
3. 第一個(gè)Tap下面添加了一個(gè)獨(dú)立的controller萌狂,里面放入了tableview
制作scroll view實(shí)現(xiàn)左右滑動(dòng)
1. 首先要聲明scroll view的內(nèi)容寬度:topScrollView!.contentSize=CGSizeMake(CGFloat(180*4),0)//因?yàn)槭菣M向滾動(dòng),是四張圖片怀泊,每張的寬度是180
2. 每一個(gè)item是一個(gè)button茫藏,然后給button加上的背景圖片
3. 最后將每一個(gè)button作為subview添加到這個(gè)scrollerview里面
制作兩個(gè)Tap View
因?yàn)檫@兩個(gè)tap可以左右切換,所以放了兩個(gè)button霹琼。
container里面放入scroll view
1. tap下面還放了一個(gè)指示左右滾動(dòng)的滑條
2. 因?yàn)榉帕藘蓚€(gè)tap务傲,所以整個(gè)contentsize是兩個(gè)container view的寬度
如何將table view添加到scroll view里面
1. scroll view里面放了兩個(gè)controller,通過tap來切換
2. 如何實(shí)現(xiàn)根據(jù)文字(description的高度來自適應(yīng)cell的高度):關(guān)鍵是autolayout
3. 這里我們單獨(dú)創(chuàng)建了一個(gè)view controller枣申,里面放了一個(gè)tableview售葡,撐滿整個(gè)view;其中autolayout最重要的第一點(diǎn)就是tableview的height=top layout
4. 單獨(dú)設(shè)計(jì)了tableview cell 的prototype忠藤,左邊是一個(gè)圖片挟伙,右邊是文字+文字
5. cell里面為了實(shí)現(xiàn)內(nèi)容的自適應(yīng),根據(jù)文字的高度來調(diào)整cell的高度模孩,其中圖片的大小是固定的(包括寬和高)尖阔,這里最重要的就是image view和description lable view的距離底部的content view的約束條件都是>=0
如何實(shí)現(xiàn)cell的自適應(yīng)高度還有一點(diǎn)比較重要:預(yù)估高度贮缅,講rowHeigh的屬性設(shè)置為AutomaticDimension
如何添加controller到scroll view里面:
1. 初始化storybaord里面的兩個(gè)controller
2. 這里需要注意添加addChildViewController:否則點(diǎn)擊cell之后 數(shù)據(jù)源都是消失,答案在爆棧上扎到http://stackoverflow.com/questions/14798516/uitableview-custom-cells-disappearing-content-after-scrolling
scroller view滾動(dòng)介却,如何讓藍(lán)條跟著滾動(dòng)
1. animationbar前面講到了谴供,是放在第一個(gè)button下面的一個(gè)UIView
2. 要讓它隨著scroll 一起滾動(dòng),其實(shí)目的就是為了改變它的frame筷笨;這里有一個(gè)比例關(guān)系憔鬼,channelscrllview的一個(gè)寬度是scrollerview的寬度,以為藍(lán)條這個(gè)animation只是在my channel和all channel之間切換胃夏,也就是說移動(dòng)的中心是my channel的中心到all channel的中心之間轴或,也就是100;所以有了上面的一個(gè)比例關(guān)系
3. 為什么要偏移40仰禀,是因?yàn)檫@個(gè)animationview的起點(diǎn)是中心靠左位置