填写iPhone X上的页眉和页脚

时间:2018-04-09 19:16:10

标签: swift uicollectionview iphone-x

我在Swift 4中的集合视图上以编程方式执行页眉和页脚时出现问题。这是我在iPhone X上的应用程序的图像:

Click here to see the image.

我想将标题扩展到屏幕的最顶部(在凹槽区域中)和页脚,直到屏幕的实际结束。我该怎么做?

1 个答案:

答案 0 :(得分:0)

来自tylerf的{​​{1}}(Apple员工,可能还有@smileyborg):

  

如果您在集合视图中使用流布局,则可以使用   部分插图,以确保您的集合视图中的内容保持不变   在安全区域内。你可以使用新的   UICollectionViewFlowLayout.sectionInsetReference属性(设置为   .fromSafeArea)所以这会自动发生。

然而,我的内容仍然滚动到我的页脚视图并进入安全区域,就像屏幕截图所示。相反,我确定了安全区域:

self.safeAreaLayoutGuide = [UILayoutGuide new];
[self addLayoutGuide:safeAreaLayoutGuide];
[NSLayoutConstraint activateConstraints:@[
          [safeAreaLayoutGuide.topAnchor constraintEqualToAnchor:self.topAnchor],
          [safeAreaLayoutGuide.leadingAnchor constraintEqualToAnchor:self.leadingAnchor],
          [safeAreaLayoutGuide.bottomAnchor constraintEqualToAnchor:self.bottomAnchor],
          [safeAreaLayoutGuide.trailingAnchor constraintEqualToAnchor:self.trailingAnchor],
          ]];

然后,在我的-layoutSubviews方法中,我可以使用bounds插入safeAreaLayoutGuide.layoutFrame

UIEdgeInsets safeAreaEdgeInsets = 
UIEdgeInsetsMake(CGRectGetMinY(safeAreaLayoutGuide.layoutFrame),
                 CGRectGetMinX(safeAreaLayoutGuide.layoutFrame),
                 CGRectGetHeight(self.bounds) - CGRectGetMinY(safeAreaLayoutGuide.layoutFrame) - CGRectGetHeight(safeAreaLayoutGuide.layoutFrame),
                 CGRectGetWidth(self.bounds) - CGRectGetMinX(safeAreaLayoutGuide.layoutFrame) - CGRectGetWidth(safeAreaLayoutGuide.layoutFrame));
self.collectionView.frame = UIEdgeInsetsInsetRect(self.bounds, safeAreaEdgeInsets);