近期,公司做一個功能需求开呐,tableView頭部視圖下拉放大+navigationBar動態(tài)隱藏效果烟勋,特整理如下规求,方便以后查找,如有錯誤卵惦,希望批評指正颓哮,如有更好的思路,不吝賜教鸵荠,共同進步冕茅。
1.tableview.tableHeaderView = headerView?
按照常規(guī)方法創(chuàng)建默認狀態(tài)
tableview創(chuàng)建->headerView創(chuàng)建->navigationBar的透明設置
代碼如下:
這些寫完之后運行出來就是圖一的狀態(tài),頭部下拉放大本質就是改變的imageView1的frame蛹找,根據(jù)scrollView的contentOffSet來判斷視圖view的原點對于scrollView的原點的距離姨伤,我們這個方法中self.automaticallyAdjustsScrollViewInsets沒有設置,默認就是YES庸疾,實現(xiàn)的效果是下拉視圖放大乍楚,上推改變的是navigationBar的動態(tài)隱藏效果,代碼如下
我是分了三個階段來進行判斷届慈,其中y > -64(64默認是navigationBar 的高度) 變化的是navigationBar動態(tài)隱藏效徒溪,y<-64 下拉放大事寬高等比例擴大,在實際開發(fā)中大家可以根據(jù)需要分金顿,運行出來的效果如下
在實現(xiàn)navigationBar 動態(tài)效果的時候我的做法是將一個帶有透明度的color對象轉化成image對象臊泌,這個及時美工沒有給圖,咱們自己就能實現(xiàn)想要的顏色揍拆,透明度的背景圖渠概,具體代碼如下:
到此基本的就能實現(xiàn)頭部視圖下拉放大的效果以及navigationBar的動態(tài)效果了,重點是圖四嫂拴。
2.[tableview addSubView:headerView];
將headerview添加到tableview上播揪,下拉放大的原理跟1中的方式是一樣的,還是改變imageView1的frame筒狠,headerView.frame 和tableview.frame 并沒有發(fā)生變化猪狈。區(qū)別在于利用了tableview.contentInset屬性來決定現(xiàn)實的位置
這個方式中設置self.automaticallyAdjustsScrollViewInsets=NO,那y的分階段還是比較容易分的
以上就是兩種簡單的方式實現(xiàn)上述需求辩恼,如有錯誤雇庙,希望批評指正!