Xamarin iOS设置NavigationController.NavigationBar.Translucent = true;转移scrollview内容upwords

时间:2018-06-18 12:45:14

标签: ios xamarin scrollview

当用户在屏幕上滚动时,我想逐渐在屏幕上显示导航栏。并希望将其设为alpha以隐藏导航栏(设置Alpha因为我想显示导航控制器的后箭头)。

向上滚动词语时很好。

但是,如果我将其半透明属性设置为true,则在初始位置设置scrollview时,即NavigationController.NavigationBar.Translucent = true; 然后它使用相同的导航栏高度移动内容upwords。

预期结果:滚动完成后,Scrollview应处于初始状态。

有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:0)

如果您在iOS 10上启用了AutomaticallyAdjustsScrollViewInsets或在iOS 11上启用了ContentInsetAdjustmentBehavior,并且您已为scrollView添加了正确的约束。滚动视图将自动调整其插图以使内容显示在NavigationBar下。

但是如果您设置NavigationController.NavigationBar.Translucent = true;并使用MyScrollView.SetContentOffset(new CGPoint(0, 0), true);在初始位置设置scrollview。这将导致您的问题:导航栏似乎涵盖了内容。

你可以使用另一个api使滚动视图滚动到顶部:

MyScrollView.ScrollRectToVisible(new CGRect(0, 0, 5, 5), true);

这会将滚动视图的内容放在导航栏下方。或者尝试判断Translucent状态,如果这是真的,请使用它来取回初始位置:

MyScrollView.SetContentOffset(new CGPoint(0, -NavigationController.NavigationBar.Frame.GetMaxY()), true);