【问题标题】:Remove extra bottom padding from horizontal UIScrollView从水平 UIScrollView 中删除额外的底部填充
【发布时间】:2014-12-14 08:22:48
【问题描述】:

我创建了一个水平滚动的UIScrollView,其中包含UIButtons。我希望UIButtons 填充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 高。

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

如何删除此填充以使按钮的高度与滚动视图的高度完全相同?

界面生成器:

运行应用程序:

(我暂时取消隐藏滚动条显示在这里)
我需要将白色按钮拉高以覆盖其下方的灰色区域。

【问题讨论】:

  • 不管滚动视图高度是多少,总是有 10pt 的差异吗?
  • @hlfcoding 滚动视图的高度等于另一个按钮的高度。当我更改该按钮的高度以更改滚动视图高度时,间距量会增加!按钮总是 34pt 高。所以它与为滚动条保留的空间无关。将更新问题。

标签: ios swift uiscrollview ios8 autolayout


【解决方案1】:

我相信 UIScrollView 要与 AutoLayout 一起使用,您需要使用 https://developer.apple.com/library/ios/technotes/tn2154/_index.html 中所述的内部“内容”视图来包装其子视图

【讨论】:

    【解决方案2】:

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

    【解决方案3】:

    这对我有用

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

    【讨论】:

      猜你喜欢
      • 2010-09-26
      • 2017-09-18
      • 2020-12-24
      • 1970-01-01
      • 1970-01-01
      • 2020-01-05
      • 2012-12-19
      • 2017-08-21
      相关资源
      最近更新 更多