ios – UIScrollView子视图的视差效果

ios – UIScrollView子视图的视差效果,第1张

概述我试图在UIScrollView中的UIView上创建一个视差效果. 效果似乎有效,但效果不好. >首先,我将两个UIView子视图添加到UIScrollView并设置UIScrollViews contentSize. >视图总结并创建一个{320,1000}的contentSize. >然后我在scrollViewDidScroll中实现了以下内容: - (void)scrollViewDid 我试图在UIScrollVIEw中的UIVIEw上创建一个视差效果.
效果似乎有效,但效果不好.

>首先,我将两个UIVIEw子视图添加到UIScrollVIEw并设置UIScrollVIEws contentSize.
>视图总结并创建一个{320,1000}的contentSize.
>然后我在scrollVIEwDIDScroll中实现了以下内容:

- (voID)scrollVIEwDIDScroll:(UIScrollVIEw *)scrollVIEw{    CGfloat offsetY = scrollVIEw.contentOffset.y;    CGfloat percentage = offsetY / scrollVIEw.contentSize.height;    NSLog(@"percent = %f",percentage);    if (offsetY < 0) {        firstVIEw.center = CGPointMake(firstVIEw.center.x,firstVIEw.center.y - percentage * 10);    } else if (offsetY > 0){        firstVIEw.center = CGPointMake(firstVIEw.center.x,firstVIEw.center.y + percentage * 10);    }}

这些代码行确实产生了视差效果,但是随着滚动继续,如果我滚动到原始的起始位置,则视图不会恢复到原始位置.

我已经尝试 *** 纵视图层和框架,都具有相同的结果.

任何帮助将不胜感激.

解决方法 您所遇到的问题是您将基于偏移量与缩放比例的次要滚动,而不仅仅是当前的偏移量.所以当你从99的偏移增加到100(100)之后,你的辅助卷轴会增加10个,但当你回到99时,你的辅助卷动只能减少9.9,因此不再是这是最后一次你在99.非线性滚动是可能的,但不是你这样做的方式.

一个可能的更容易的方式来处理这个是创建一个第二个滚动视图,并将其放在实际的滚动视图之下.使它变得非难处理(setUserInteractionEnabled:false),并在主滚动委托期间修改它的contentOffset,而不是手动移动UIImageVIEw.

- (voID)scrollVIEwDIDScroll:(UIScrollVIEw *)scrollVIEw{    [scrollVIEw2 setContentOffset:CGPointMake(scrollVIEw.contentOffset.x,scrollVIEw.contentOffset.y * someScalingFactor) animated:NO];}

但是请确保不为scrollVIEw2设置委托,否则可能会得到一个循环委托方法调用,这不会为您结束.

总结

以上是内存溢出为你收集整理的ios – UIScrollView子视图的视差效果全部内容,希望文章能够帮你解决ios – UIScrollView子视图的视差效果所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1098483.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存