gpt4 book ai didi

ios - UIScrollView 重复背景

转载 作者:行者123 更新时间:2023-11-29 13:27:31 25 4
gpt4 key购买 nike

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

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

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

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

  1. 性能很糟糕。
  2. 它不能正确缩放。

我的下一个想法是向 myScrollView 添加一个 UIView(我们称它为 backgroundView),并将重复图像作为背景色,并将所有 subview 添加到 backgroundView。但是,如果不断调整 backgroundView 的大小,这可能会变得非常困惑,这样当用户缩小(甚至暂时超出最小缩放级别)时,您就看不到 backgroundView 的“周围”。

有什么建议吗?

类似这个问题,但是这个问题没有答案 UIScrollView with pattern image as background

最佳答案

我认为这就是您想要做的。

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

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

当你向右滚动足够的距离时(基于与 ScrollView 边界相关的图像大小,或者可见框架是什么),然后将现在不可见的 ImageView 移动到最右侧的右侧 ImageView 。为向左、向上和向下滚动做类似的事情。您可能需要在缩放时添加/删除 ImageView ……或者始终使用所需的最大 ImageView 数。

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

编辑:为了帮助说明这个概念,我们可以做以下类比。 scrollview 是一个镜头,可以看到瓷砖地板的一部分,scrollview 的内容背景是瓷砖地板。但是,我们仅根据镜头使用了足够数量的图 block 。当镜头移动时,我们将不可见的瓷砖移动到镜头将移动到的区域。当镜头缩小时,我们添加图 block (如果在放大时移除它们)。我希望这有助于理清思路,而不是让它变得更加困惑。

关于ios - UIScrollView 重复背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12749343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com