滚动视图的水平居中内容

Posted

技术标签:

【中文标题】滚动视图的水平居中内容【英文标题】:Horizontally center content of a scroll view 【发布时间】:2015-09-09 08:45:05 【问题描述】:

我在滚动视图中嵌入了一个标准视图,并且我正在使用自动布局。一切正常,我几乎完成了。只有一个小问题。我的内容视图具有 536 点的固定高度,因此在 iPhone 6 中它无需滚动即可完全显示,而在 iPhone 4S 中我必须滚动才能查看其他内容。

我的问题是视图不是水平居中是iPhone 6所以它在底部显示了额外的空间(为了清楚起见我用灰色填充了它),如下图所示(即底层滚动视图)。

我的问题是:如何在不破坏约束的情况下将内容视图水平居中?目前滚动视图固定在视图控制器的四个边框上,而内容视图固定在滚动视图的四个边框上。

我很高兴提供您需要的任何其他信息来帮助我解决问题。

编辑:这对我有用

CGFloat superViewHeight = self.view.bounds.size.height;
CGFloat scrollViewHeight = self.scrollView.bounds.size.height;

if (superViewHeight > scrollViewHeight)
    self.topConstraint.constant += (superViewHeight - scrollViewHeight) / 4;

【问题讨论】:

【参考方案1】:

如果您的内容视图不需要滚动,您应该手动调整顶部约束。

CGFloat scrollViewHeight = CGRectGetHeight(scrollView.bounds);
CGFloat contentViewHeight = CGRectGetHeight(contentView.bounds);

if (scrollViewHeight >= contentViewHeight)

    topConstraint.constant += ((scrollViewHeight - contentViewHeight) / 2.f);

【讨论】:

什么是topConstraint 这是scrollView的顶部和contentView的顶部之间的约束。 好吧,它不起作用,我想我知道为什么了:scrollViewcontentView 已经有相同的高度,即它们都是 536 磅高,但 iPhone 6 的屏幕是更高(约 670pt),所以这可能是个问题。 首先给你的滚动视图添加一些约束来适应它的父视图,然后它应该可以工作了。 我尝试实现类似的东西并且它有效。所以你肯定有高度计算或顶部约束的问题。我需要做一些调试才能理解。我把剩下的留给你。如果它解决了您的问题,请将答案标记为正确。

以上是关于滚动视图的水平居中内容的主要内容,如果未能解决你的问题,请参考以下文章

根据内容居中水平 UICollectionView

SwiftUI当总内容宽度小于屏幕宽度时,如何在动态水平滚动视图中居中内容

垂直和水平居中内容,浏览器不允许滚动

启用分页时将水平可滚动集合视图的单元格居中并使其他单元格部分可见

如何在滚动视图中将内容居中?

UIScrollView - 添加子视图,使其水平和垂直居中