您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>通訊/手機(jī)編程>

特斯拉組件 ios高性能開(kāi)發(fā)應(yīng)用

大?。?/span>1.4 MB 人氣: 2017-09-27 需要積分:2

  簡(jiǎn)要說(shuō)明下各個(gè)協(xié)議的作用:

  FMPageDataSource, 提供子頁(yè)面,子頁(yè)面的個(gè)數(shù),子頁(yè)面展示的frame給PageController。

  FMPageDelegate, 提供頁(yè)面交互切換和非交互切換的回調(diào)給上層以及頁(yè)面的縱向滑動(dòng)和橫向滑動(dòng)的contentoffset給上層。

  FMTabDataSource, 提供TabView的具體展示效果。

  FMTabDelegate, 提供TabView的點(diǎn)擊響應(yīng)給上層。

  FMCoverController, 提供CoverView給CoverController.

  其中,F(xiàn)MTabController默認(rèn)遵循FMTabDataSource,F(xiàn)MTabDelegateSource,F(xiàn)MPageDataSource,F(xiàn)MPageDelegate協(xié)議。FMCoverController遵循FMCoverDatasource協(xié)議。

  2.2 接口設(shè)計(jì)

  接口遵循高內(nèi)聚和低耦合的特性,只把Delegate和DataSource開(kāi)放給上層,同時(shí)做接口分離,把Page,Tab,Cover特性的分離。 代碼如下:

  @interfaceFMTabController : FMBusinessViewController 《FMPageControllerDataSource, FMPageControllerDelegate, FMTabDataSource, FMTabDelegate》@interfaceFMCoverController : FMTabController 《FMCoverDataSource》2.3 Child頁(yè)面的生命周期管理和切換。

  1.UIScrollView支持分頁(yè)效果,手勢(shì)處理及交互操作多個(gè)回調(diào)方法可以實(shí)現(xiàn)頁(yè)面的切換效果。

  2.生命周期管理有兩種方式 a.頻繁地add/remove ChildController b.使用下面的代碼實(shí)現(xiàn)生命周期的管理:

  1)shouldAutomaticallyForwardAppearanceMethods 2)beginAppearanceTransition: animated: 3)endAppearanceTransition

  a.會(huì)產(chǎn)生一個(gè)重大缺陷,就是頻繁切換的卡頓問(wèn)題。

  b.不需要頻繁地去調(diào)用add/remove,1)方法避免了 add/remove產(chǎn)生的生命周期,2)和3)保證了開(kāi)發(fā)者可以自己控制ChildController的生命周期。

  Page的生命周期圖如下:

  特斯拉組件 ios高性能開(kāi)發(fā)應(yīng)用

  初次或者reloadPage

  特斯拉組件 ios高性能開(kāi)發(fā)應(yīng)用

  交互切換和非交互切換 2.4 性能問(wèn)題擴(kuò)展

  以下通過(guò)Iphone5 模擬器 10.3系統(tǒng),與UIPageViewController做了性能上的對(duì)比。

  UIPageViewController 快速切換內(nèi)存占用情況

  特斯拉組件 ios高性能開(kāi)發(fā)應(yīng)用

  UIPageViewController 快速切換GPU占用情況

  特斯拉組件 ios高性能開(kāi)發(fā)應(yīng)用

  Page組件快速切換內(nèi)存占用情況

  特斯拉組件 ios高性能開(kāi)發(fā)應(yīng)用

  Page組件快速切換GPU占用情況

  特斯拉組件 ios高性能開(kāi)發(fā)應(yīng)用

  從上圖中內(nèi)存占用圖標(biāo)的波動(dòng)情況可以看出UIPageViewController在快速切換的時(shí),會(huì)盡可能快地釋放掉不用的controller及其view(主要是view)以保證內(nèi)存占用較小,所以圖標(biāo)指標(biāo)先才會(huì)頻繁的波動(dòng),與UIPageViewController作對(duì)比,Page組件用空間換時(shí)間的策略避免頁(yè)面卡頓。

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?