Xamarin iOS 设置 NavigationController.NavigationBar.Translucent = true;移动 scrollview 内容 upwords
Xamarin iOS Setting NavigationController.NavigationBar.Translucent = true; shifts scrollview content upwords
我想在用户滚动屏幕时逐渐在屏幕上显示导航栏。并希望将其设为 alpha 以隐藏导航栏(设置 Alpha 是因为我想显示导航控制器的后退箭头)。
向上滚动时没问题。
但是如果我设置它的半透明 属性 为真,即 NavigationController.NavigationBar.Translucent = 真;
然后它移动具有相同导航栏高度的内容upwords。
预期结果:滚动视图应在滚动完成后处于初始状态。
谁能帮我解决这个问题?
如果您在 iOS 10 上启用了 AutomaticallyAdjustsScrollViewInsets
或在 iOS 11 上启用了 ContentInsetAdjustmentBehavior
,并且您已经为滚动视图添加了正确的约束。滚动视图将自动调整其 insets 以使内容显示在 NavigationBar 下方。
但是如果您设置 NavigationController.NavigationBar.Translucent = true;
并使用 MyScrollView.SetContentOffset(new CGPoint(0, 0), true);
将滚动视图设置在初始位置。这将导致您的问题:内容似乎被导航栏覆盖了。
您可以使用另一个 api 使滚动视图滚动到顶部:
MyScrollView.ScrollRectToVisible(new CGRect(0, 0, 5, 5), true);
这会将滚动视图的内容放在导航栏下方。或者尝试判断 Translucent
状态,如果为真使用此返回初始位置:
MyScrollView.SetContentOffset(new CGPoint(0, -NavigationController.NavigationBar.Frame.GetMaxY()), true);
我想在用户滚动屏幕时逐渐在屏幕上显示导航栏。并希望将其设为 alpha 以隐藏导航栏(设置 Alpha 是因为我想显示导航控制器的后退箭头)。
向上滚动时没问题。
但是如果我设置它的半透明 属性 为真,即 NavigationController.NavigationBar.Translucent = 真; 然后它移动具有相同导航栏高度的内容upwords。
预期结果:滚动视图应在滚动完成后处于初始状态。
谁能帮我解决这个问题?
如果您在 iOS 10 上启用了 AutomaticallyAdjustsScrollViewInsets
或在 iOS 11 上启用了 ContentInsetAdjustmentBehavior
,并且您已经为滚动视图添加了正确的约束。滚动视图将自动调整其 insets 以使内容显示在 NavigationBar 下方。
但是如果您设置 NavigationController.NavigationBar.Translucent = true;
并使用 MyScrollView.SetContentOffset(new CGPoint(0, 0), true);
将滚动视图设置在初始位置。这将导致您的问题:内容似乎被导航栏覆盖了。
您可以使用另一个 api 使滚动视图滚动到顶部:
MyScrollView.ScrollRectToVisible(new CGRect(0, 0, 5, 5), true);
这会将滚动视图的内容放在导航栏下方。或者尝试判断 Translucent
状态,如果为真使用此返回初始位置:
MyScrollView.SetContentOffset(new CGPoint(0, -NavigationController.NavigationBar.Frame.GetMaxY()), true);