网易首页导航封装类
最近來新項目,要做類似新浪那樣的,問了下亮哥,亮哥給發了一個demo,做的挺不錯的特別是上面的導航,我基本都是在demo的基礎上改了下滿足了公司的要求,問安卓開發的他們說有第三方,今天閑著沒事自己試著進一步的封裝了下,同時把源放在了github上,方便以后要做的朋https://github.com/ywcui/ViewPagerndicator
這里不貼源碼了,記錄下自己遇到的問題。
問題1:由于在底部滑動時會執行UIScrollViewDelegate代理中的scrollViewDidScroll方法,而我在方法里面讓導航欄滑動了, 但在執行導航欄滑動的代碼中執行了代理barSelectedIndexChanged;在實現這個代理中我又將下面的滑動的方法執行了這樣就造成了循環,這個問題當時試了幾次,中午吃飯的時候都在想,想著要讓一個不執行對方滑動的方法,回來后試了下是可以的,在執行導航欄滾動的方法加了一個參數做為標記值,若flag=No則執行代理否則不執行這樣就能解決了
問題2.在點擊導航欄中的按鈕時從左向右滑動時,在滑動開始的按鈕上有來回晃動一下的效果,動畫感覺不太爽,這個問題找了好久,沒想到石頭設置了下Bottom中的setShowPageWithIndex方法的
參數animated為NO就可以了,這也能體現出找bug的能力自己還是有待提高。動畫問題首先應該找動畫的地方,而我把這個就忽略了,這個值得思考。
問題3.用滾動條放導航按鈕,按鈕多時,可能有的會隱藏,怎么讓它點屏幕邊上的按鈕時自動的滑出幾個按鈕,這樣就放方便不用用戶用手滑了。
這個我也是看亮哥的demo,首先要知道ScrollView它的contentOffset.x是為0, 這樣找到點擊按鈕的frame,根據點中按鈕的frame的x坐標和ScrollView的contentOffset.x做比較, 當大于一定值(屏幕右側的量)時,根據點擊按鈕的索引和按鈕數組,讓ScrollView滾動到點擊按鈕右邊的按鈕的位置,這樣就能向右自動滑動,同理向左滑動時,滾動到點擊按鈕左邊的按鈕的位置。具體看github上YZPTopScrollView中的-(void)selectIndex:(int)index withFlag:(BOOL)flag。
效果圖:
總結
- 上一篇: 2016年3月23日作业
- 下一篇: OC基础之访问修饰符