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

时间:2012-02-03 12:25:03

标签: ios uiview uiscrollview core-animation core-graphics

似乎是一个非常简单的问题!但是我遇到了很大困难。

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

  1. scrollView.backgroundColor = [UIColor colorWithPatternImage:myImage]]
    • 不会滚动内容
  2. 创建UIView contentSize的大小(实际上,由于滚动视图上的弹性反弹而更大),并在UIScrollView的子视图中使用上述模式。
  3. 与(2)类似,exept我只创建一个UIView大小,可以看到背景图像的最大重复次数,并巧妙地将视图移动到需要的地方以显示正确的背景重复。
    • 在动画滚动时,此背景视图会意外左右移动。
  4. 创建UIView子类并覆盖drawRect。使用各种Core Graphics技术手动绘制内容。
    • 无法动画。实现我自己的 contentOffset 属性不是标准的核心动画属性。
    • 覆盖 drawRect UIScrollView 不不尊重内容偏移量,并且在滚动/动画时不会多次调用。 rect参数始终只是 UIScrollView的范围。
  5. 与(4)一样,除了我在bounds.origin实现中设置UIView子类的setContentOffset之外,因为它是一个可动画的属性。
    • drawRect 似乎无法每帧调用。
  6. 根据此回答中的建议使用CATiledLayerLarge UIScrollView with background pattern fails。这里的实施细节:http://www.cimgf.com/2011/03/01/subduing-catiledlayer/
    • 我真的不希望看到用户滚动异步绘制瓷砖的丑陋。这只是一个简单的背景模式!
  7. 这似乎是最简单的事情!为什么这么难!?

1 个答案:

答案 0 :(得分:1)

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

这就像CATiledLayer一样,但只使用UIKit,在主线程上加载了磁贴。

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