现在的位置: 首页 > 综合 > 正文

想要动态的在UIView的subviews的指定位置插入和删除某个subview怎么办

2017年08月17日 ⁄ 综合 ⁄ 共 940字 ⁄ 字号 评论关闭

      最近在写一个儿童故事书的软件,其中涉及到书的翻页。我是想用一个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了。思路说么多,以后找时间再贴上代码。(真的要睡觉了,困死了睡觉睡觉

      

抱歉!评论已关闭.