iOS视差滚动效果(类似于Yahoo News Digest应用程序)
我想知道如何实现视差滚动类似于雅虎新闻文摘应用程序。其中,当用户水平滚动时,背景图像以不同的速度滚动并启用分页iOS视差滚动效果(类似于Yahoo News Digest应用程序),ios,yahoo,parallax,Ios,Yahoo,Parallax,我想知道如何实现视差滚动类似于雅虎新闻文摘应用程序。其中,当用户水平滚动时,背景图像以不同的速度滚动并启用分页 可能是他们用滚动视图和背景视图。不太确定。提示实现这样的滚动将是伟大的。我检查过类似的问题,但找不到我想要的答案。我以前用2个滚动视图做过这项工作 您有主细节滚动视图,然后是视差滚动视图(或任何您想要的位置) 然后,您将成为详细信息滚动视图的代理 在方法scrollView:didcroll中,您可以调整视差视图的滚动 如果你只是做x轴,那么你想要这样的东西 CGFloat detai
可能是他们用滚动视图和背景视图。不太确定。提示实现这样的滚动将是伟大的。我检查过类似的问题,但找不到我想要的答案。我以前用2个滚动视图做过这项工作 您有主细节滚动视图,然后是视差滚动视图(或任何您想要的位置) 然后,您将成为详细信息滚动视图的代理 在方法
scrollView:didcroll
中,您可以调整视差视图的滚动
如果你只是做x轴,那么你想要这样的东西
CGFloat detailMaxOffset = self.detailScrollView.contentSize.width - CGRectGetWidth(self.scrollView.frame);
CGFloat percentage = self.detailScrollView.contentOffset.x / maxOffset;
CGFloat parallaxMaxOffset = self.parallaxScrollView.contentSize.width - CGRectGetWidth(self.parallaxScrollView.frame);
[self.parallaxScrollView setContentOffset:CGPointMake(percentage * parallaxOffset, 0);
这会将每个屏幕上的ScrollView内容偏移“百分比”设置为相同
要获得视差效果,只需使每个滚动视图的contentSize
不同即可
如果视差滚动视图的内容大小大于细节滚动视图,则滚动速度会更快。如果内容较小,则滚动速度会变慢。答案如下。我从uitableview中将其子类化,以便可以重用数据并将其包装到uiview中 谢谢,
凯尔100%工作,易于筑坝 在图像视图上查看图像视图的精确大小。 默认情况下,视图集0为alpha
//MARK: Scroll View Delegate methods
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
NSLog(@"X: %f Y: %f",scrollView.contentOffset.x,scrollView.contentOffset.y);
CGFloat scrollY = _mainScrollView.contentOffset.y;
CGFloat height = _alphaView.frame.size.height;
CGFloat alphaMonitor = scrollY/height;
_alphaView.alpha = alphaMonitor;
}
Swift 3 下面是我如何在tvOS应用程序的Swift 3中获得垂直滚动的视差效果 在ViewDidLoad()中: 及以下:
override func viewDidLayoutSubviews() {
self.detailScrollView!.contentSize = CGSize(width: 1920, height: 2700)
self.parallaxScrollView?.contentSize = CGSize(width: 1920, height: 3000)
}
//// THE SCROLL VIEW
func scrollViewDidScroll(_ scrollView: UIScrollView) {
// Parallax effect
let detailMaxOffset = self.detailScrollView.contentSize.height - self.detailScrollView.frame.height;
let percentage = self.detailScrollView.contentOffset.y / detailMaxOffset
let parallaxMaxOffset = self.parallaxScrollView.contentSize.height - self.parallaxScrollView.frame.height;
let parallaxOffset = CGPoint(x:0,y:(percentage * parallaxMaxOffset))
self.parallaxScrollView.setContentOffset((parallaxOffset), animated: false)
}
可能重复:Yahoo应用程序是否有不同的滚动效果。顺便说一句,水平滚动的视差效果很好。它们还可以在垂直滚动上进行缩放。你介意在这方面给点提示吗。已接受答案。将x替换为y,将宽度替换为高度。差不多就是这样。实际上,我已经通过使用负contentOffset.y完成了垂直缩放,并将top scrollview/imageview的frame设置为gap加上垂直负滚动缩放的图像高度。在我的例子中,我在视差滚动视图上有按钮。我怎么知道按钮被点击了,因为这里的视差CrollView在后面,所以它不会占用用户的时间event@BabulPrabhakar你可以把滚动视图放在前面。或者您可以覆盖前视图上的hitTest:withEvent:方法。或禁用前视图上的触摸。或者在没有视差效果的情况下移动按钮。
override func viewDidLayoutSubviews() {
self.detailScrollView!.contentSize = CGSize(width: 1920, height: 2700)
self.parallaxScrollView?.contentSize = CGSize(width: 1920, height: 3000)
}
//// THE SCROLL VIEW
func scrollViewDidScroll(_ scrollView: UIScrollView) {
// Parallax effect
let detailMaxOffset = self.detailScrollView.contentSize.height - self.detailScrollView.frame.height;
let percentage = self.detailScrollView.contentOffset.y / detailMaxOffset
let parallaxMaxOffset = self.parallaxScrollView.contentSize.height - self.parallaxScrollView.frame.height;
let parallaxOffset = CGPoint(x:0,y:(percentage * parallaxMaxOffset))
self.parallaxScrollView.setContentOffset((parallaxOffset), animated: false)
}