在UIScrollView中长时间滚动的一个非常大的UIView导致资源问题?

时间:2016-11-17 21:55:06

标签: ios uiview uiscrollview

在使用UIScrollView创建无限滚动功能方面(没有循环回到开头),对于日历实际上,在UIScrollView中长时间滚动的一个非常大的UIView会导致资源问题吗?

假设:

  1. 假设有人以编程方式将子视图添加/删除到此主背板视图上,因为它将需要显示/可见,然后再删除。
  2. 不想使用UICollectionView(请关注使用UIScrollView的问题)
  3. 要求:

    1. 想要将UI视图放到此背景平面上以及直接绘制到它,例如添加行。
    2. 因此,需要添加/删除像绘制的线条以及UILabels这样的内容。 (好的天堂并没有深入研究线,他们是否需要在他们自己的子视图中绘制,然后您将添加删除这些"线"子视图,而不是直接绘制到子视图上画架中的主背板视图
    3. 背景:

      • 我看到有一些关于3"页面的建议" (视图)并且在滚动发生时继续移动这些,但这看起来更复杂。

1 个答案:

答案 0 :(得分:1)

就使用视图而言,不应存在任何资源问题。 我开发了具有下一个视图结构的有点地图应用程序。

MapScrollView (UIScrollView)
  - TileContainerView (UIView)
    - TileContainerSubViews[10..] (UIView)
      - TileLayer [] (CALayer)
  - UIButton[]
  - IconLayer[] (CALayer)
  - TrackLineLayer (CALayer)
  - .....

层次结构和MapScrollView中的所有Tile **视图共享相同的大小,它与TileContainerSubViews [n]的大小对齐,后者进一步保存了许多大小为256x256的TileLayer。最大的TileContainerSubView []可以容纳多达10000x10000的TileLayer(s) 视图大小为2560000x2560000。 (当然,由于资源问题,我们实际上无法添加那么多层。)所有视图/图层都会在途中添加/删除。

注意你可以创建大型UIView而不是CALayer。 当我尝试创建巨大的CALayer时,程序终止了一些错误消息。 CATiledLayer似乎没有这个限制,但我还没有经过测试。