Ios 如何为大型UIScrollView(随视图滚动)设置背景模式

Ios 如何为大型UIScrollView(随视图滚动)设置背景模式,ios,uiview,uiscrollview,core-animation,core-graphics,Ios,Uiview,Uiscrollview,Core Animation,Core Graphics,这似乎是一个非常简单的问题!但是我有很大的困难 到目前为止,我的想法和尝试: scrollView.backgroundColor=[UIColor WithPatternImage:myImage]] 不随内容滚动 创建UIViewcontentSize的大小(实际上,由于滚动视图上的弹性反弹而更大),并在UIScrollView的子视图上使用上述模式。 当UIView变得太大时,会导致大量内存命中(和崩溃)。另请参见: 与(2)类似,exept I仅创建一个ui视图,该视图的大小为将

这似乎是一个非常简单的问题!但是我有很大的困难

到目前为止,我的想法和尝试:

  • scrollView.backgroundColor=[UIColor WithPatternImage:myImage]]
    • 不随内容滚动
  • 创建
    UIView
    contentSize的大小(实际上,由于滚动视图上的弹性反弹而更大),并在
    UIScrollView
    的子视图上使用上述模式。
    • 当UIView变得太大时,会导致大量内存命中(和崩溃)。另请参见:
  • 与(2)类似,exept I仅创建一个
    ui视图
    ,该视图的大小为将要看到的背景图像的最大重复次数,并巧妙地将视图移动到需要显示正确背景重复的任何位置。
    • 使此背景视图在设置滚动动画时意外向左和向右移动。
  • 创建
    UIView
    子类并重写
    drawRect
    。使用各种核心图形技术手工绘制内容。
    • 不可设置动画。实现我自己的
      contentOffset
      属性不是标准的核心动画属性。
    • UIScrollView
      上覆盖
      drawRect
      不考虑内容偏移,并且在滚动/动画时不会多次调用。rect参数始终只是
      UIScrollView
      的边界
  • 与(4)一样,除了在我的
    setContentOffset
    实现中设置我的
    UIView
    子类的
    bounds.origin
    ,因为它是一个可设置动画的属性。
    • drawRect
      似乎并不是每帧都被调用。
  • 使用
    CATiledLayer
    ,如此答案中所建议的那样:。此处的实现详细信息:。
    • 我真的不想看到用户滚动时异步绘制瓷砖的丑陋。这只是一个简单的背景图案

  • 这似乎是最简单的事情!为什么这么难

    也许示例代码:ScollViewSuit->3_Tiling可以帮助您。您可以在官方文档集中搜索它

    这与CATiledLayer类似,但仅使用UIKit,互动程序加载到主线程上


    我真的不认为这是一个好的解决方案。

    也许示例代码:ScollViewSuit->3_Tiling可以帮助您。您可以在官方文档集中搜索它

    这与CATiledLayer类似,但仅使用UIKit,互动程序加载到主线程上


    我真的不认为这是一个好的解决方案。

    谢谢郭。我认为这是目前为止最好的答案。我想知道是否有可能在瓷砖不褪色的情况下让它工作?如果是这样的话,我可能会全力以赴,利用我正在使用这项技术的事实,制作一个巨大的瓷砖背景——把它变成一个真正的功能!啊,很抱歉,我没有意识到他们的平铺示例没有使用
    CATiledLayer
    ,而是使用了多个
    uiimageview
    ,我想我可能会尝试一下这项技术……好吧,标记为正确的解决方案,因为我决定继续使用它,尽管它并不简单!谢谢郭。我认为这是目前为止最好的答案。我想知道是否有可能在瓷砖不褪色的情况下让它工作?如果是这样的话,我可能会全力以赴,利用我正在使用这项技术的事实,制作一个巨大的瓷砖背景——把它变成一个真正的功能!啊,很抱歉,我没有意识到他们的平铺示例没有使用
    CATiledLayer
    ,而是使用了多个
    uiimageview
    ,我想我可能会尝试一下这项技术……好吧,标记为正确的解决方案,因为我决定继续使用它,尽管它并不简单!