Ios7 UICollectionView添加了上边距

Ios7 UICollectionView添加了上边距,ios7,uicollectionview,Ios7,Uicollectionview,我想放置一个水平显示拇指的UICollectionView控件(只有一行拇指)。出于某种原因,UICollectionView将拇指向下推44个像素,因此“0”的高度实际上是“44”。我想它可能会添加这个空间来考虑导航条的高度(我只是假设)。因为我的UICollectionView只在屏幕的一部分,所以我不想要这个边距。是否有办法将其删除?您可以尝试使用集合视图的委托流布局将此值强制设置为0: - (UIEdgeInsets)collectionView:(UICollectionView *)

我想放置一个水平显示拇指的UICollectionView控件(只有一行拇指)。出于某种原因,UICollectionView将拇指向下推44个像素,因此“0”的高度实际上是“44”。我想它可能会添加这个空间来考虑导航条的高度(我只是假设)。因为我的UICollectionView只在屏幕的一部分,所以我不想要这个边距。是否有办法将其删除?

您可以尝试使用集合视图的委托流布局将此值强制设置为0:

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
    return UIEdgeInsetsMake(PADDING_TOP, PADDING_LEFT, PADDING_BOTTOM, PADDING_RIGHT);
}

修改填充的值。

问题可能在集合视图的内容插图中。
尝试添加
self.automaticallyAdjustsScrollViewInsets=NO进入视图控制器的
viewDidLoad
方法。

您也可以在情节提要中进行设置

确保已选择ViewController,然后取消选中“调整滚动视图插入”

不过,我还没有在iOS6上测试这种IB/Storyboard方法的功能。对于代码方法,您需要检查VC是否响应该方法:

if ([self respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)]) {
self.automaticallyAdjustsScrollViewInsets = NO;
}
我发现加上:

self.edgesForExtendedLayout = UIRectEdgeNone;
在视图控制器中,我在中加载UICollectionView解决了这个问题,因为我无法获得可接受的答案

我发现这个问题的答案可以找到,并提供了一个非常深入和有趣的解释之间的差异自动调整滚动视图插入,扩展布局和边缘的扩展布局


值得一读

与@Sviatoslav答案类似,您可以尝试以下方法:

- (void) viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];

    yourCollectionView.contentOffset = CGPointMake(0, 0);
}
Swift 3:

首先要将ViewController
自动调整滚动ViewInsets
设置为false:

self.automaticallyAdjustsScrollViewInsets = false
然后,您应该能够相应地调整边插入:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
    //top, left, bottom, right
    return UIEdgeInsets(top: 10, left: 0, bottom: 0, right: 0)
}

正如其他一些人所提到的,
viewController.automaticallyAdjustsScrollViewInsets
已经完成。我的解决方案

Swift 4.2、Xcode 10.1、iOS 12.1:

由于某种原因,
collectionView.contentSize.height
似乎小于我的集合视图的解析高度。首先,我使用了相对于superview高度1/2的自动布局约束为了解决这个问题,我将约束更改为相对于视图的“安全区域”。

这允许我使用
collectionView.contentSize.height设置单元格高度,以垂直填充我的集合视图:

private func setCellSize() {
    let height: CGFloat = (collectionView.contentSize.height) / CGFloat(numberOfRows)
    let width: CGFloat = view.frame.width - CGFloat(horizontalCellMargin * 2)

    let layout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
    layout.itemSize = CGSize(width: width, height: height)
}
之前

之后


尝试在集合视图上使用self.feedCollectionView.contentInsetAdjustmentBehavior=。从不使用
。这对我来说确实有效。

Swift 5.2/Xcode 11.3

viewController.automaticallyAdjustsScrollViewInsets 
自iOS 11以来已被弃用

我的解决方案:

collectionView.contentInsetAdjustmentBehavior = .never

效果很好。很奇怪,这件事不能在故事板上描述。这是我见过的最愚蠢的事情!浪费了这么多时间!我已经花了几个小时:)非常感谢mate@bashan它可以在情节提要上完成,有一个名为“调整滚动视图插入”的复选框请注意,如果您使用的是嵌入式segue,并且您的集合视图控制器是嵌入式控制器,则需要将此方法调用到父控制器,而不是在你的UICollectionViewControllers中类似的悲哀?谢谢,伙计,这帮我节省了不少时间和进步,真的省了不少钱。