我有一个包含CollectionViews的TabBar。 最近我遇到了第一个CollectionViews ContentInset在顶部为0的问题,但仅在第一时间。这意味着当它不应该在TopBar下面时,当我浏览TabBar时,它会修复。
我遵循了question,但解决方案根本没有做任何事情。他们还建议将我的半透明TopBar变得不透明,我真的想避免这样做。
我的收藏视图中的项目显示在我的顶部栏下,这意味着ContentInset设置为0而不是正确自动调整。 然后,当我通过tabBar导航时,它会修复两个选项卡,正如我之前所说。
我尝试从CollectionView中禁用AutomaticallyAdjustsScrollViewInsets,并考虑导航栏和状态栏的大小手动执行此操作。
this.AutomaticallyAdjustsScrollViewInsets = false;
this.CollectionView.ContentInset = new UIEdgeInsets(UIApplication.SharedApplication.StatusBarFrame.Height + this.NavigationController.NavigationBar.Frame.Height, 0, 0, 0);
这似乎首先起作用,但是当我浏览TabBar时,ContentInset会修改并向下移动,就好像AutomaticallyAdjustsScrollViewInsets设置为false一样无效。
关于如何在不打开导航栏不透明的情况下解决此问题的任何想法?
答案 0 :(得分:2)
在ios 11上,如果您要禁用之前AutomaticallyAdjustsScrollViewInsets
执行的功能,我们应该使用ContentInsetAdjustmentBehavior
。首先在AutomaticallyAdjustsScrollViewInsets
事件中将ViewDidLoad()
设置为false以适应较低的iOS版本。然后在iOS 11+上添加以下代码:
public override void ViewWillAppear(bool animated)
{
base.ViewWillAppear(animated);
if (!AutomaticallyAdjustsScrollViewInsets)
{
if (UIDevice.CurrentDevice.CheckSystemVersion(11, 0))
{
MyCollectionView.ContentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentBehavior.Never;
}
}
else
{
if (UIDevice.CurrentDevice.CheckSystemVersion(11, 0))
{
MyCollectionView.ContentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentBehavior.Automatic;
}
}
}
最后,您可以手动设置CollectionView的ContentInset以满足您的请求。