UIScrollView重复背景

时间:2012-10-05 15:23:48

标签: ios uiscrollview

我想要的是一个UIScrollView,它有一个重复的平铺图像作为背景。

这个问题的明显答案如下:

myScrollView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"myRepeatingImage.png"]];

但是,这个解决方案存在多个问题......

  1. 表现很糟糕。
  2. 正确缩放无法“正常工作”。
  3. 我的下一步想法是将一个UIView(我们称之为backgroundView)添加到myScrollView,并将重复图像作为背景颜色,并将所有子视图添加到backgroundView。但是,这可能会因为不断调整backgroundView的大小而变得非常混乱,因此当用户缩小时(即使暂时超出最小缩放级别),您也无法看到backgroundView“周围”。

    有什么建议吗?

    与此问题相似,但问题没有得到答复 UIScrollView with pattern image as background

2 个答案:

答案 0 :(得分:1)

我认为这是你想做的事。

将一些数字(z)的UIImageView作为背景。将它们提取到一个单独的控件中,这样您只需添加一个“背景视图”。假设您想要向上,向下,向左和向右滚动。您还想缩小内容大小。因此,您需要x个图像来覆盖滚动视图宽度,并且需要s图像来缓冲缩放时的宽度。 (y表示高度,t表示缓冲高度,因此z = x + r + y + t)

旁注:当我说缓冲宽度时,我的意思是将图像放在超出内容大小范围的原点。这样,当缩小超出内容边界时,您将看到这些图像,而不是“围绕”背景。

向右滚动足够的距离(根据与滚动视图边界相关的图像大小或可见帧的大小),然后将现在无可见的图像视图移动到最右侧的右侧图像视图。滚动左,上,下滚动类似。您可能需要在进行缩放时添加/删除图像视图...或者只使用所需的最大图像视图数。

重点是提高性能,理想情况下,您使用的图像视图数量很少。该数字与sizeof(scrollview.bounds)/ sizeof(image)成比例增加。 sizeof意思是帧大小,而不是字节,当然。

编辑: 为了帮助说明这个概念,我们可以做出以下类比。滚动视图是在平铺地板的一部分看的镜头,滚动视图的内容背景是平铺的地板。但是,我们只使用足够数量的基于镜头的瓷砖。当镜头移动时,我们将不可见的瓷砖移动到镜头移动到的区域。当镜头缩小时,我们会添加切片(如果我们放大则移除它们)。我希望这有助于澄清事情,而不是让它更加混乱。

答案 1 :(得分:0)

这对我有用:

scrollView.backgroundColor = UIColor.init(patternImage: UIImage(named: "repeatable paper background" )! )

希望这可以帮助那些发现这一点的人,这些年后!