从水平UIScrollView中删除额外的底部填充

时间:2014-10-19 04:18:22

标签: ios swift uiscrollview ios8 autolayout

我创建了一个包含UIScrollView的水平滚动UIButton。我希望UIButton s填充UIScrollView的高度,因此我为按钮设置了自动布局:顶部空间和底部空间设置为Superview,常量为0在Interface Builder中,它显示正确的UIScrollView帧大小,但按钮的大小为10像素 - 按钮下方有额外的填充。滚动视图的高度为44像素,按钮高度为34像素。

我认为这可能是因为它保留了一些空间来显示水平滚动条。但是我在IB中禁用了显示水平指示器。然后,我尝试通过以下代码以编程方式删除空格,但这并没有改变任何内容。

self.automaticallyAdjustsScrollViewInsets = false
scrollView.contentInset = UIEdgeInsetsZero
scrollView.scrollIndicatorInsets = UIEdgeInsetsZero
scrollView.contentOffset = CGPointMake(0, 0)

编辑:它不能与保留滚动条的空间有关。滚动视图的高度等于另一个按钮的高度。当我更改该按钮的高度以更改滚动视图高度时,底部间距的量会增加。按钮总是高34pt。

我尝试的另一件事是移除底部空间并添加固定的高度约束,但这会导致模糊的滚动视图高度。

如何删除此填充,以便按钮是滚动视图高度的确切高度?

Interface Builder:
enter image description here

运行应用程序:
enter image description here
(我暂时取消了滚动条以显示它)
我需要白色按钮来拉伸高度以覆盖它下方的灰色区域。

3 个答案:

答案 0 :(得分:0)

我相信UIScrollView可以使用AutoLayout,您需要使用https://developer.apple.com/library/ios/technotes/tn2154/_index.html

中所述的内部“内容”视图包装其子视图

答案 1 :(得分:0)

我已经解决了。我只需要指定第一个按钮的高度等于滚动视图高度,同时保留顶部和底部约束。这必须更新滚动视图的内容大小,因为设置为仅对超级视图具有顶部和底部约束的其他按钮被拉伸以填充先前存在的填充的空间。 Interface Builder中没有警告或错误,并且在我的设备上按预期显示。

答案 2 :(得分:0)

这对我有用

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
    return 0
}