UIScrollViews 重叠

Posted

技术标签:

【中文标题】UIScrollViews 重叠【英文标题】:UIScrollViews overlapping 【发布时间】:2017-03-14 01:58:38 【问题描述】:

我正在构建一个简单的应用程序,您可以在其中使用纸娃娃之类的工具来描述您的外观。 Check out this image. 计划是有 4 个水平滚动视图:一个用于发型,第二个用于面部毛发,3d 用于顶部,4th 用于底部。我刚刚意识到滚动视图会重叠。例如。长发的底部与面部毛发的滚动视图以及顶部的滚动视图重叠。重叠滚动视图是否可行并且在技术上可行?说长发滚动视图的下半部分在面部毛发滚动视图的上半部分之下。无论如何我都会玩这个,但也许有人对此问题有一些经验。

【问题讨论】:

【参考方案1】:

你真的不希望滚动视图重叠,因为滚动和触摸我不认为,但你可以让内容逃脱它所在的视图的边界,甚至滚动视图,让它看起来重叠。我看到的最大问题是,您可能必须更改滚动视图或子视图的 zposition 才能在顶部制作长头发或在下面塞入短发等。

我会推荐 UICollectionViews 水平滚动。然后确保取消选中集合视图和任何单元格上的 cliptobounds。添加图像视图确保您取消选中 clipstobounds。使其顶部对齐。 (您需要动态调整一些图像并增加或减小尺寸以使其看起来不错,但这是另一个问题)。 z 索引意味着将集合视图放在前面,基于哪些应该重叠或不重叠。附件是我所说的内容的视频和故事板的屏幕截图。我在视频中唯一做的另一件事就是像这样将子视图放在前面

extension UICollectionView
open override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)     
    superview!.bringSubview(toFront: self)
  

虽然我不会在生产中这样做。我可能会为它制作动画。

您可以看到图像下降了很多,但您可以做的是根据集合视图的大小将它们重新绘制为更小,这样它们就不会下降太多并且应该保留在它们的您可以将区域重绘为单元格的确切大小或动态更改图像视图的内容模式

视频here

我希望这更有意义。

【讨论】:

所以我试了一下。两个不同的滚动视图重叠是​​不可能的——你在另一个滚动视图中得到一个滚动视图,这很有趣,但没有任何意义。将元素部分保留在滚动视图上,部分位于其外部(“逃避滚动视图的边界”)也不是一种选择。如果 scrollview 比它作为容器的元素小 - 你只能看到这个元素的一部分。不太明白你最后一句的意思。你能描述一下吗? drive.google.com/open?id=0B8p7W9MDCkTaa0xUcmE4TWM2eE0我上面描述的方法 有趣!明天我会和它一起玩。谢谢,不胜感激

以上是关于UIScrollViews 重叠的主要内容,如果未能解决你的问题,请参考以下文章

具有水平滚动的嵌套 UIScrollViews

拖动两个 UIScrollViews

UIScrollViews 中的 UIViewControllers:我没有正确理解啥?

嵌套的 uiscrollviews 和自定义处理事件路由

iOS嵌套的UIScrollViews没有响应

UIScrollViews 和动态创建页面