当前位置:  开发笔记 > Android > 正文

iOS7:UICollectionView出现在UINavigationBar下

如何解决《iOS7:UICollectionView出现在UINavigationBar下》经验,为你挑选了3个好方法。

我已经在iOS 7上构建了一段时间,但是我还没有解决这个问题,我在Storyboard中创建了一些启用了autolayout的视图,并以标准显示UINavigationController.大多数都很好,但基于UICollectionView总是将它们置于导航栏下,除非我将半透明度设置为NO.我已经尝试了这个edgesExtended技巧,但这似乎并没有解决它,我不一定介意关闭半透明,但我想解决它更干净.



1> BFar..:

FYI如果您的UICollectionView是视图控制器层次结构中的根视图,并且您的视图控制器已automaticallyAdjustsScrollViewInsets设置为YES(这是默认值),则contentInset应自动更新.

但是,如果您的滚动视图(或tableview/collectionview/webview btw)是其视图控制器层次结构中的第一个视图,则scrollview的contentInset仅会自动更新.

我经常在我的层次结构中添加一个UIImageView以获得背景图像.如果这样做,则必须在viewDidLayoutSubviews中手动设置scrollview的边缘插入:

- (void) viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];
    CGFloat top = self.topLayoutGuide.length;
    CGFloat bottom = self.bottomLayoutGuide.length;
    UIEdgeInsets newInsets = UIEdgeInsetsMake(top, 0, bottom, 0);
    self.collectionView.contentInset = newInsets;

}


您对将其作为层次结构中的第一个视图的评论至关重要 - 这对我的案例产生了巨大的影响

2> Antonio MG..:

之前我遇到过这个问题,只需设置带有上边距的集合视图的边缘:

 [self.myCollectionVC.collectionView setContentInset:UIEdgeInsetsMake(topMargin, 0, 0, 0)];

topMargin是导航栏的大小,或者您希望集合开始滚动的任何点.

通过这种方式,您的集合视图将开始在导航栏下方滚动,同时它将填满整个屏幕,如果您的导航栏是半透明的,您将看到它.


topMargin还应考虑状态栏高度(20分)

3> 小智..:

我在ios 11之后遇到了这个问题,只是将UICollectionView的contentInsetAdjustmentBehavior设置为never:

self.collectionView.contentInsetAdjustmentBehavior = .never


:
推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有