有没有办法为 UIScrollView 中的不同图层设置不同的帧大小?

Posted

技术标签:

【中文标题】有没有办法为 UIScrollView 中的不同图层设置不同的帧大小?【英文标题】:Is there a way to set different frame sizes for different layers in a UIScrollView? 【发布时间】:2013-04-11 22:55:42 【问题描述】:

现在我有一个 UIScrollView 和一个半透明的顶部和底部栏。 UIScrollView 包含一个可平移和缩放的大型 UIImageView。

我希望能够切换图像并使图像特定部分周围的所有内容变暗,但透明度与半透明的顶部/底部条完美结合。由于内容是可滚动/可缩放的,因此如果我将图像本身变暗,则只要该部分位于顶部/底部栏下方,它就会加倍变暗。

我试图通过创建一个嵌套在顶部和底部栏之间的较小 UIScrollView 来解决这个难题,并向它发送缩放/平移命令以尝试镜像它下面的 UIScrollView,但这并没有很好地工作.尝试同步动画是一场噩梦(我尝试在 zoomDidScroll 中复制 zoomScale/contentOffset,使用 KVO 等将缩放/平移动画单独发送到每个 UIScrollView)。

有什么方法可以为每个单独的图层设置不同的帧大小/截止点?或者也许每个 UIImageView 子视图?我也对任何其他提议的解决方案持开放态度,这真的让我陷入困境。感谢您的帮助。

切换之前的样子:

切换后我想要什么:

【问题讨论】:

当你把图像周围的所有东西都变暗时,你能把顶部和底部条的背景颜色设置为清晰的颜色吗? 这真的很精彩,不知道为什么我没有想到这个。非常感谢! 很高兴为您服务。 【参考方案1】:

为什么不用另一个半透明视图覆盖“中心”部分以匹配工具栏,然后在图层上使用蒙版使您希望的部分完全透明?

【讨论】:

我可以这样做,但是我无法在 UIScrollView 上进行任何平移/缩放,而无需实时计算更改并更新中心图层上的蒙版半透明视图。可能比我以前拥有的位于顶部的 UIScrollView 更复杂,但使用起来太头疼了。编辑:除非有一种简单的方法可以相应地计算和更新中心层,否则不确定是否存在。 您尝试做的事情本身就很复杂,因此任何解决方案都难以实施。

以上是关于有没有办法为 UIScrollView 中的不同图层设置不同的帧大小?的主要内容,如果未能解决你的问题,请参考以下文章

为同一类中的 2 个不同 UIScrollView 设置委托

如何区分 UIScrollView 中的平移和滚动

有没有办法在 UIScrollView 中模拟 scrollViewDidScrollToBottom?

有没有办法让 UIScrollView 在任意位置停止和反弹

iOS中的水平UIScrollView和数百个缩略图?

有没有办法通过重用视图的 UIScrollView 上的核心动画来更改内容偏移?