Xamarin.ios 在滚动条上添加视差效果
我有一个视图,上面有一个scrollview和一个常规视图,现在它只是改变了图层的高度,所以当scrollview被向下拖动时,它会使它位于最上面 我想做一个更好的,并添加一个很好的褪色效果,但目前我有困难使其褪色顺利 以下是我目前正在做的事情:Xamarin.ios 在滚动条上添加视差效果,xamarin.ios,uiscrollview,parallax,Xamarin.ios,Uiscrollview,Parallax,我有一个视图,上面有一个scrollview和一个常规视图,现在它只是改变了图层的高度,所以当scrollview被向下拖动时,它会使它位于最上面 我想做一个更好的,并添加一个很好的褪色效果,但目前我有困难使其褪色顺利 以下是我目前正在做的事情: private void MainScrollViewOnScrolled(对象发送方,事件参数e) { 如果(!(发送方为UIScrollView scrollView)) { 返回; } var topViewHeight=vtopanel.Bou
private void MainScrollViewOnScrolled(对象发送方,事件参数e)
{
如果(!(发送方为UIScrollView scrollView))
{
返回;
}
var topViewHeight=vtopanel.Bounds.Height;
var scrollOffset=scrollView.ContentOffset.Y;
var ScrollIndicationSets=scrollView.ScrollIndicationSets;
nfloat Scroll指示灯P=0;
var scrollOffsetDelta=topViewHeight-scrollOffsetY;
如果(scrollOffsetDelta>0)
{
scrollIndicatorTop=scrollOffsetDelta;
}
ScrollIndicationSets.Top=scrollIndicatorTop;
scrollView.ScrollIndicationSets=ScrollIndicationSets;
var generalInfoEnabled=scrollOffsetY==0;
如果(启用了通用信息)
{
vtopanel.Alpha=0;
vtopanel.Transform=CGAffineTransform.MakeIdentity();
UIView.Animate(0.3f,0,UIViewAnimationOptions.CurveEaseInOut,
() => {
vtopanel.Alpha=1;
},
无效的
);
}
其他的
{
vtopanel.Alpha=1;
vtopanel.Transform=CGAffineTransform.MakeIdentity();
UIView.Animate(0.3f,0,UIViewAnimationOptions.CurveEaseInOut,
() => {
vtopanel.Alpha=0;
},
无效的
);
}
}
它可以工作,但不是很好,当我向下拖动时,它会消失,但当我滚动回顶部时,会明显延迟顶部视图的重新出现。Android有一种很好的视差效果,希望有人能指导我在iOS上使用视差效果。你可以将
vtopanel.Alpha
和scrollOffsetY
一起更改。并通过scrollOffsetY
的值使其可见或不可见
例如:
private void MainScrollViewOnScrolled(object sender, EventArgs e)
{
if (!(sender is UIScrollView scrollView))
{
return;
}
var topViewHeight = vTopPanel.Bounds.Height;
var scrollOffsetY = scrollView.ContentOffset.Y;
var scrollIndicatorInsets = scrollView.ScrollIndicatorInsets;
nfloat scrollIndicatorTop = 0;
var scrollOffsetDelta = topViewHeight - scrollOffsetY;
if (scrollOffsetDelta > 0)
{
scrollIndicatorTop = scrollOffsetDelta;
}
scrollIndicatorInsets.Top = scrollIndicatorTop;
scrollView.ScrollIndicatorInsets = scrollIndicatorInsets;
//you can custom the topViewAlpha here
//nfloat topViewAlpha = scrollOffsetY / (this.View.Frame.Height -vTopPanel.Frame.Size.Height);
nfloat topViewAlpha = scrollOffsetY / (vTopPanel.Frame.Size.Height);
if (topViewAlpha >=1)
{
topViewAlpha = 1;
}
//To get the opposite effect
topViewAlpha = 1 - topViewAlpha;
vTopPanel.Alpha = topViewAlpha;
}
}
它有点工作,虽然它给了我相反的效果,想法是当滚动视图向下滚动时,俯视图逐渐消失,当我备份屏幕时,它逐渐消失in@Eman如果想要获得相反的效果,只需将topViewAlpha更改为(1-topViewAlpha)。检查我的最新答案。