滚动视图的水平居中内容
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
的顶部之间的约束。
好吧,它不起作用,我想我知道为什么了:scrollView
和 contentView
已经有相同的高度,即它们都是 536 磅高,但 iPhone 6 的屏幕是更高(约 670pt),所以这可能是个问题。
首先给你的滚动视图添加一些约束来适应它的父视图,然后它应该可以工作了。
我尝试实现类似的东西并且它有效。所以你肯定有高度计算或顶部约束的问题。我需要做一些调试才能理解。我把剩下的留给你。如果它解决了您的问题,请将答案标记为正确。以上是关于滚动视图的水平居中内容的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI当总内容宽度小于屏幕宽度时,如何在动态水平滚动视图中居中内容