【问题标题】:How to set a background pattern for a large UIScrollView (that scrolls with the view)如何为大型 UIScrollView 设置背景图案(随视图滚动)
【发布时间】:2012-02-03 12:25:03
【问题描述】:

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

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

  1. scrollView.backgroundColor = [UIColor colorWithPatternImage:myImage]]
    • 不随内容滚动
  2. 创建UIViewcontentSize的大小(实际上,由于滚动视图上的弹性反弹而更大),并在UIScrollView的这个子视图上使用上述模式。
  3. 与 (2) 类似,但我只创建了一个UIView 的最大重复次数的大小的背景图像,并巧妙地将视图移动到需要显示正确背景重复的任何位置。
    • 在为滚动设置动画时导致此背景视图意外左右移动。
  4. 创建UIView 子类并覆盖drawRect。使用各种核心图形技术手工绘制内容。
    • 不可动画。实现我自己的 contentOffset 属性不是标准的核心动画属性。
    • 覆盖 drawRect on UIScrollView 不尊重内容偏移,并且在滚动/动画时不会被多次调用。 rect 参数始终只是 UIScrollView 的边界。
  5. 与(4)一样,除了我在setContentOffset 实现中设置了UIView 子类的bounds.origin,因为它是一个动画属性。
    • drawRect 似乎并不是每一帧都被调用。
  6. 使用CATiledLayer,如此答案中所建议的:Large UIScrollView with background pattern fails。这里的实现细节:http://www.cimgf.com/2011/03/01/subduing-catiledlayer/
    • 我真的不希望在用户滚动时看到异步绘制的图块的丑陋。这只是一个简单的背景图案!

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

【问题讨论】:

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


    【解决方案1】:

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

    这和 CATiledLayer 一样工作,但只使用 UIKit,瓦片是在主线程上加载的。

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

    【讨论】:

    • 谢谢郭。我认为这看起来是迄今为止最好的答案。我想知道是否有可能在不让瓷砖完全淡入的情况下完成这项工作?如果是这样,我可能会全力以赴并利用我正在使用该技术的事实,并制作一个巨大的平铺背景 - 将它变成一个真正的功能!
    • 啊,抱歉没有意识到他们的平铺示例没有使用CATiledLayer,而是使用了多个UIImageViews,我想我可以试试这个技术......
    • 好的,标记为正确的解决方案,因为我决定继续它,尽管远非简单!
    猜你喜欢
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多