【发布时间】:2013-10-25 00:59:22
【问题描述】:
我想放置一个水平显示拇指的 UICollectionView 控件(只有一行拇指)。出于某种原因,UICollectionView 将拇指向下推 44 像素,因此“0”高度实际上是“44”。我认为它可能会添加这个空间来考虑导航栏的高度(我只是假设)。由于我的 UICollectionView 只在屏幕的一部分上,我不想要这个边距。有没有办法去掉?
【问题讨论】:
标签: ios7 uicollectionview
我想放置一个水平显示拇指的 UICollectionView 控件(只有一行拇指)。出于某种原因,UICollectionView 将拇指向下推 44 像素,因此“0”高度实际上是“44”。我认为它可能会添加这个空间来考虑导航栏的高度(我只是假设)。由于我的 UICollectionView 只在屏幕的一部分上,我不想要这个边距。有没有办法去掉?
【问题讨论】:
标签: ios7 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,然后取消选中“调整滚动视图插图”。
我还没有测试过这个 IB/Storyboard 方法在 iOS6 上的作用。使用代码方法,您需要检查 VC 是否响应该方法:
if ([self respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)]) {
self.automaticallyAdjustsScrollViewInsets = NO;
}
【讨论】:
我发现添加:
self.edgesForExtendedLayout = UIRectEdgeNone;
在视图控制器中,我正在加载 UICollectionView 解决了这个问题,因为我无法获得接受的答案。
我找到这个答案的问题可以在here 找到,并提供了一个非常深入和有趣的解释,说明自动调整的滚动视图插图、扩展布局和扩展布局的边缘之间的区别。
值得一读
【讨论】:
类似于@Sviatoslav 的回答,您可以尝试以下方法:
- (void) viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
yourCollectionView.contentOffset = CGPointMake(0, 0);
}
【讨论】:
斯威夫特 3:
首先您要将 viewControllers automaticallyAdjustsScrollViewInsets 设置为 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 一直是deprecated since iOS 11。我的解决方案...
Swift 4.2、Xcode 10.1、iOS 12.1:
由于某种原因,collectionView.contentSize.height 看起来比我的集合视图的解析高度要小。首先,我使用了相对于父视图高度的 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 = .never。这实际上对我有用。
【讨论】:
Swift 5.2 / Xcode 11.3
viewController.automaticallyAdjustsScrollViewInsets
自 iOS 11 起已被弃用。
我的解决方案:
collectionView.contentInsetAdjustmentBehavior = .never
【讨论】: