【发布时间】:2012-02-03 12:25:03
【问题描述】:
似乎是一个非常简单的问题!但是我遇到了很大的困难。
到目前为止我的想法和尝试:
-
scrollView.backgroundColor = [UIColor colorWithPatternImage:myImage]]- 不随内容滚动
- 创建
UIViewcontentSize的大小(实际上,由于滚动视图上的弹性反弹而更大),并在UIScrollView的这个子视图上使用上述模式。- 当 UIView 变得太大时会导致大量内存命中(和崩溃)。 另请参阅:Large UIScrollView with background pattern fails
- 与 (2) 类似,但我只创建了一个
UIView的最大重复次数的大小的背景图像,并巧妙地将视图移动到需要显示正确背景重复的任何位置。- 在为滚动设置动画时导致此背景视图意外左右移动。
- 创建
UIView子类并覆盖drawRect。使用各种核心图形技术手工绘制内容。-
不可动画。实现我自己的
contentOffset属性不是标准的核心动画属性。 -
覆盖
drawRectonUIScrollView不尊重内容偏移,并且在滚动/动画时不会被多次调用。 rect 参数始终只是UIScrollView的边界。
-
不可动画。实现我自己的
- 与(4)一样,除了我在
setContentOffset实现中设置了UIView子类的bounds.origin,因为它是一个动画属性。-
drawRect似乎并不是每一帧都被调用。
-
- 使用
CATiledLayer,如此答案中所建议的:Large UIScrollView with background pattern fails。这里的实现细节:http://www.cimgf.com/2011/03/01/subduing-catiledlayer/。- 我真的不希望在用户滚动时看到异步绘制的图块的丑陋。这只是一个简单的背景图案!
这似乎是最简单的事情!为什么这么难!?
【问题讨论】:
标签: ios uiview uiscrollview core-animation core-graphics