想要動態的在UIView的subviews的指定位置插入和刪除某個subview怎麼辦

      最近在寫一個兒童故事書的軟件,其中涉及到書的翻頁。我是想用一個UIView,此處定義爲boxView來裝一頁一頁的view,此處將其定義爲pageView。點擊前一頁按鈕和下一頁按鈕時用那種翻書的效果,那假如我一本書有10來頁,如果在loadview中一次性將所有的pageView都初始化好add到boxView裏,這樣做是很方便,但是有很多頁是不需要立即顯示出來的,這樣就浪費內存,同時還容易導致內存泄漏。所以要在boxView裏動態的插入和刪除某個pageView。

       通常要展示多個頁面時,我們會用到UIScrollView。那初始化時我們知道有多少頁,定義這個UIScrollView的frame讓其正好能容納這些view就行了,等到我們要插入子view時將其放大指定的位置,再將UIScrollView滾動到這個位置就行了。(哎,本來上代碼就不用囉嗦這麼多了,可是在家裏的這臺電腦上沒有代碼,腦子現在這個點已經迷糊了快哭了)。可我這個是普通的UIView啊,那要怎麼做呢?我反覆查了API,UIView不能夠一下子設置其subview有多少個,[insertView:(UIView *)view atIndex:(NSUInteger)index]這個方法的index不能夠超過UIView的子view的數量。這時想起來了UIView的tag屬性,又看到了UIView的viewWithTag這個方法,好吧,方法來了大笑。我們將每個pageView的tag設置成它應出現的順序,這樣根據tag就能找到這個view,再用[[UIView subviews] indexOfObject:剛剛找到的view]也就找到這個view在boxView的index是多少了。在翻頁效果的方法裏,執行[UIView exchangeSubviewAtIndex:indexA withSubviewAtIndex:indexB]方法就能知道下一個要顯示的pageView的index了。

        由此,在翻頁時的順序問題就解決了,知道點擊上一頁按鈕要出現哪個pageView,點擊下一頁按鈕要出現哪個pageView了。思路說麼多,以後找時間再貼上代碼。(真的要睡覺了,困死了睡覺睡覺

      

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章