類似于這種效果 利用 hitTest 機(jī)制
Hit-Test 機(jī)制
當(dāng)用戶觸摸(Touch)屏幕進(jìn)行交互時(shí),系統(tǒng)首先要找到響應(yīng)者(Responder)婿禽。系統(tǒng)檢測(cè)到手指觸摸(Touch)操作時(shí)哲戚,將Touch 以UIEvent的方式加入U(xiǎn)IApplication事件隊(duì)列中。UIApplication從事件隊(duì)列中取出最新的觸摸事件進(jìn)行分發(fā)傳遞到UIWindow進(jìn)行處理疙描。UIWindow 會(huì)通過(guò)hitTest:withEvent:方法尋找觸碰點(diǎn)所在的視圖馆揉,這個(gè)過(guò)程稱之為hit-test view嗡贺。
hitTest 的順序如下
UIApplication->UIWindow->RootView->···->subview
在頂級(jí)視圖(Root View)上調(diào)用pointInside:withEvent:方法判斷觸摸點(diǎn)是否在當(dāng)前視圖內(nèi)隐解;
如果返回NO,那么hitTest:withEvent:返回nil诫睬;
如果返回YES厢漩,那么它會(huì)向當(dāng)前視圖的所有子視圖發(fā)送hitTest:withEvent:消息,所有子視圖的遍歷順序是從最頂層視圖一直到到最底層視圖岩臣,即從subviews數(shù)組的末尾向前遍歷,直到有子視圖返回非空對(duì)象或者全部子視圖遍歷完畢宵膨。
https://github.com/kentchen1991/CSHTabbarTest ?
代碼寫的比較亂 只是做一個(gè)個(gè)人筆記架谎,有要參考的 自行優(yōu)化